首先让我说我是 MQL、Freebase 和 Google API 的新手。
我正在尝试使用 Google API Objective-C 客户端从 Freebase 获取结果,但在没有生成类的情况下我找不到任何关于使用 API 的示例或信息。
我找到了这个页面http://code.google.com/p/google-api-objectivec-client/wiki/Introduction
但是“在没有生成类的情况下使用 API”部分没有给我任何有关构建这些查询的相关信息,并且包含的示例都是生成的类。
到目前为止,我发现我需要先创建一个带有 RPC URL 的 GTLService 对象(我猜是https://www.googleapis.com/freebase),设置 API 版本(沙箱环境的 v1sandbox) ,并设置 API 密钥(在本例中为 kGoogleAPIKey)。
GTLService * service = [[GTLService alloc] init];
service.rpcURL = [NSURL URLWithString:@"https://www.googleapis.com/freebase"];
service.apiVersion = @"v1sandbox";
service.APIKey = kGoogleAPIKey;
完毕!厉害,没问题。
下一部分是我卡住的地方。我的问题是,如何使用 Google API Objective-C 客户端构建 MQL 查询以从 Freebase 检索结果?
在“对象和查询”部分,从上面的链接中,它指出我需要创建一个查询并执行它,但是我在哪里包含 MQL 查询?
// queryWithMethodName: methodName is the RPC method name to use
GTLQuery * query = [GTLQuery queryWithMethodName:@"mqlread"]; // Not sure if this is correct
GTLServiceTicket * ticket = [service executeQuery:query completionHandler:^(GTLServiceTicket *ticket, id object, NSError *error) {
NSArray * items = [object items];
NSLog(@"%@", [items description]);
// Do something with items.
}];
作为参考,Freebase API URL 是
https://www.googleapis.com/freebase/v1/mqlread?query={}
MQL 查询是
[{
"id": null,
"name": null,
"type": "/travel/travel_destination",
"/travel/travel_destination/tourist_attractions": [{
"id": null,
"name": null
}],
"/location/location/containedby": [{
"name": "California"
}]
}]
我真的很感激任何帮助,甚至是正确方向的一点!