第一个帖子在这里,所以我希望这是足够的细节。
我今天开始使用自由基巨蟒来获取我正在工作的一个程序的电影信息。我需要抓住的一件事是在一部电影中主演的演员名单。我遵循了一些教程和指南来完成这个任务,并且可以得到一个导演或导演的电影列表,但是当我试图对一个演员或一个电影的演员做同样的事情时,我会得到“无效”的结果。
我在Python和Freebase查询编辑器中都遇到了同样的问题,您可以看到我在下面尝试过的内容。在编辑器中编写的所有示例的链接都可以找到这里,因为Stack溢出不允许我在第一篇文章中在每个示例下面发布链接!
中的工作主管查询:
import freebase
fb = freebase.mqlread
q = {'type':'/film/film', 'name':'Inception', 'directed_by':[]}
fb(q)工作主管的文件记录查询:
import freebase
fb = freebase.mqlread
q = {'type':'/film/director', 'name': 'Christopher Nolan', 'film':[]}
fb(q)基于这些测试,我试图对演员也做同样的事情,但结果却很奇怪:
中的强制转换列表查询不工作:
import freebase
fb = freebase.mqlread
q = {'type':'/film/film', 'name':'Inception', 'starring':[]}
fb(q)中没有处理演员的文件记录查询:
import freebase
fb = freebase.mqlread
q = {'type':'/film/actor', 'name':'Leonardo DiCaprio', 'film':[]}
fb(q)奇怪的是,我得到了准确数量的演员/电影,但没有名字。有谁知道问题可能是什么吗?非常感谢,我很感谢你的建议。
发布于 2012-12-05 19:59:48
这是因为电影和演员之间没有直接的联系,而是通过一个没有名字的“中介”节点。这是因为一次有三件事要联系起来: 1)电影,2)演员,3)角色/角色。
在编写任何MQL之前,您需要检查要使用的域/类型的架构,以查看如何存储信息。
还请注意,如果您只匹配名称,您将得到重复的重做,等等。您应该跟踪ID,以消除一切歧义。下面是修改后的查询:
[{
"type": "/film/film",
"name": "Inception",
"mid": null,
"starring": [{
"actor": null,
"mid": null
}]
}]https://stackoverflow.com/questions/13728471
复制相似问题