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 世代しか返しません! これがなぜなのかを理解するのを手伝ってください。