我是Freebase的新手,我一直试图找到2个节点之间的关系而没有成功。
例如,我想找出Lewis Hamilton(/ en / lewis_hamilton)和一级方程式(/ en / formula_one)之间是否存在链接,这在现实生活中是如此,但我似乎无法找到它。
我尝试过以下MQL代码,也是交替ID:
1)
[{
"type" : "/type/link",
"source" : { "id" : "/en/lewis_hamilton" },
"master_property" : null,
"target" : { "id" : "/en/formula_one" },
"target_value" : null
}]
2)
{
"id":"/en/lewis_hamilton",
"/type/reflect/any_master":[{
"link":null,
"name":null
}],
"/type/reflect/any_reverse":[{
"link":null,
"name":null
}],
"/type/reflect/any_value":[{
"link":null,
"value":null
}]
}
我也无法使用他们可以执行此操作的几个应用程序,因为它每次都会返回“超出用户速率限制”。应用程序是:
答案 0 :(得分:5)
您提供的查询是正确的,只是它们只查看一个链接的关系。令人惊讶的是,现在Freebase中没有从刘易斯汉密尔顿到一级方程式的路径。如果有,它可能看起来像这样:
/en/lewis_hamilton → /type/object/type → /base/formula1/formula_1_driver
/base/formula1/formula_1_driver → /type/type/domain → /base/formula1
/base/formula1 → /freebase/domain_profile/equivalent_topic → /en/formula_one
Freebase不支持递归查询,因此找不到主题之间的这些多链路路径是没有好办法的。您尝试的应用程序通过生成具有越来越嵌套的子查询的查询来模拟递归。不幸的是,它们已经过时,缺少正确运行的API密钥。这是嵌套查询的样子:
{
"id": "/en/lewis_hamilton",
"name": null,
"/type/reflect/any_master": [{
"link": {
"master_property": null,
"target": {
"id": null,
"name": null,
"/type/reflect/any_master": [{
"link": {
"master_property": null,
"target": {
"id": "//base/formula1",
"name": null
}
},
"name": null
}]
}
},
"name": null
}]
}
这些类型的查询可能需要很长时间才能运行,如果在Freebase data dumps上本地运行可能会更好。
答案 1 :(得分:1)
Freebase现在只返回503s,所以实验起来有点困难,但是
Freebaseapps上的所有应用都是开源的,因此查看您找到的应用的来源应该会给您一些好的提示。 app目录位于https://www.freebase.com/apps(但现在没有呈现)
只需点击一下即可克隆Freebaseapps上的所有应用。几乎所有在该基础架构上编写的应用程序都停止工作,当谷歌切换到新的API时,开发人员如果多年没有看过它们就不太可能修复它们,但是你可以通过以下方式获得感兴趣的工作:a)克隆他们,b)注册API密钥和c)将该API密钥添加到克隆的应用程序。