2

MQL リファレンスの第 3 章(具体的にはセクション 3.2.6) では、クエリを単純化するか、データをマッサージして独自の構造に似た構造を返すために、クエリを逆にして別の構造で同じデータを取得する方法について説明しています。

そこで、次のクエリから始めます。

https://api.freebase.com/api/service/mqlread?query={"query":{"type":"/automotive/model","name":"Ford Taurus","generations":[]}}

読み取り可能なバージョン:

{
    "type":"/automotive/model",
    "name":"Ford Taurus",
    "generations":[]
}

結果:

{
  "code": "/api/status/ok",
  "result": {
    "generations": [
      "First Generation Ford Taurus",
      "Second Generation Ford Taurus",
      "Fifth Generation Ford Taurus",
      "Sixth Generation Ford Taurus",
      "Fourth Generation Ford Taurus",
      "Third Generation Ford Taurus"
    ],
    "name": "Ford Taurus",
    "type": "/automotive/model"
  },
  "status": "200 OK",
  "transaction_id": "cache;cache04.p01.sjc1:8101;2013-04-25T22:05:58Z;0012"
}

しかし、クエリを生成中心にしたいので、次のように変更します。

https://api.freebase.com/api/service/mqlread?query={"query":[{"type":"/automotive/generation","model":"Ford Taurus","name":null}]}

読み取り可能なバージョン:

[{
    "type":"/automotive/generation",
    "model":"Ford Taurus",
    "name":null
}]

結果:

{
  "code": "/api/status/ok",
  "result": [
    {
      "model": "Ford Taurus",
      "name": "First Generation Ford Taurus",
      "type": "/automotive/generation"
    },
    {
      "model": "Ford Taurus",
      "name": "Third Generation Ford Taurus",
      "type": "/automotive/generation"
    }
  ],
  "status": "200 OK",
  "transaction_id": "cache;cache01.p01.sjc1:8101;2013-04-25T23:00:35Z;0010"
}

私の逆クエリは 2 世代しか返しません! これがなぜなのかを理解するのを手伝ってください。

4

1 に答える 1

1

Automobile Generationの Freebase スキーマ ページを見ると、modelプロパティが廃止され、モデルプロパティに置き換えられていることがわかります。クエリにその変更を加えます。

[{
  "type": "/automotive/generation",
  "models": "Ford Taurus",
  "name": null
}]

期待される結果セットが得られます。

[
  {
    "models": "Ford Taurus",
    "name": "First Generation Ford Taurus",
    "type": "/automotive/generation"
  },
  {
    "models": "Ford Taurus",
    "name": "Second Generation Ford Taurus",
    "type": "/automotive/generation"
  },
  {
    "models": "Ford Taurus",
    "name": "Fifth Generation Ford Taurus",
    "type": "/automotive/generation"
  },
  {
    "models": "Ford Taurus",
    "name": "Sixth Generation Ford Taurus",
    "type": "/automotive/generation"
  },
  {
    "models": "Ford Taurus",
    "name": "Fourth Generation Ford Taurus",
    "type": "/automotive/generation"
  },
  {
    "models": "Ford Taurus",
    "name": "Third Generation Ford Taurus",
    "type": "/automotive/generation"
  }
]
于 2013-04-25T23:27:53.447 に答える