2013-04-25 35 views
2

Chapter 3 of the MQL reference(特别是第3.2.6节)讨论颠倒查询以获得不同结构中的相同数据,以简化查询或按摩数据以返回与您自己类似的结构。反转MQL查询

于是我开始用下面的查询:

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" 
} 

我倒查询只返回两代人!请帮我弄清楚这是为什么。

回答

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" 
    } 
] 
+0

哇!我偶然发现它(我正在研究* models *模式,所以我不知道* model *)。谢谢! – 2013-04-25 23:38:38