在Freebase API中,我想将相关对象提取到Freebase中的对象。例如:
当我输入“Michael Jordan”(http://www.freebase.com/m/054c1)时,它应该返回“Chicago Bull's”(http://www.freebase.com/m/0jm74)。
我过了https://developers.google.com/freebase/v1/search-cookbook,但无法想出过滤器操作数。
有什么想法吗?
答案 0 :(得分:0)
我不知道您使用的是哪个API,但如果您要使用Freebase Search API,则会获得该实体的mid
,然后将其重新插入另一个适合的搜索那个实体。下面的代码(使用Javascript w / jQuery)将输入可能性限制在Mr.Jordan所在的领域,然后将其插入到篮球运动员身上的一个属性中:前球队。
$(function()
{
$("#myInput").suggest().bind("fb-select", function(e, data)
{
var topic_service = 'https://wwwlgoogleapis.com/freebase/v1/topic';
var params = {
'filter' : '(all type:/sports/sports_award_winner)'
};
$.getJSON(topic_service + data.id + '?callback=?', params, function(topic)
{
var teams = data.property['/basketball/basketball_player/former_teams']['values'];
for ( var i = 0; i < teams.length; i++)
{
alert(teams[i]);
}
})
})
});
对于更一般的类型,您可以在不限制搜索的情况下执行此操作,但是您必须查询该实体所拥有的属性,然后将其用作过滤器以获取您之后的数据。 / p>
另一方面......
如果您不知道乔丹打篮球,或者篮球运动员的属性是什么,您可以调用链接的ID,找到这些链接的属性,然后在这些链接上查询这些属性:
{
"mid": "/en/michael_jordan",
"type": [{
"id":null,
"properties": [{
"id":null,
"links": [{
"source": {
"id": "/en/michael_jordan"
},
"target": {
"id": null,
"optional": true,
},
"optional": true,
"target_value": null
}],
"master_property": {
"optional": true,
"links": [{
"source": {
"id": null
},
"target": {
"id": "/en/michael_jordan"
}
}]
}
}]
}
- 此code取自2011年Jamie Taylor提供的I / O演讲的幻灯片。