首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Freebase API获取其他类型查询

Freebase API获取其他类型查询
EN

Stack Overflow用户
提问于 2011-11-03 00:36:41
回答 1查看 489关注 0票数 2

我正在使用freebase python来访问freebase api。我有以下要执行的查询:

代码语言:javascript
运行
复制
query = [{
        "id":   None,
        "name" : [],
        "type" : "/people/person",
        "/common/topic/image":[{}],
        "limit" : 10,
        "type" : []
        }]

results = freebase.mqlread(query)

基本上,我想从人们那里获得一些实例,并获得他们属于的其他类型。但是当我尝试运行它时,我得到了错误:

代码语言:javascript
运行
复制
{u'id': u'/user/root', u'type': [u'/type/user'], u'/common/topic/image': [{u'type': [u'/type/content', u'/common/image'], u'id': u'/m/05kdqcb', u'name': None}], u'name': [u'Freebase Staff']}
{u'id': u'/', u'type': [u'/type/namespace'], u'/common/topic/image': [], u'name': []}
{u'id': u'/type/namespace/keys', u'type': [u'/type/property'], u'/common/topic/image': [], u'name': [u'keys']}
{u'id': u'/boot', u'type': [u'/type/namespace'], u'/common/topic/image': [], u'name': []}
{u'id': u'/boot/root_permission', u'type': [u'/type/permission'], u'/common/topic/image': [], u'name': [u'Root Permission']}
{u'id': u'/type/object/permission', u'type': [u'/type/property'], u'/common/topic/image': [], u'name': [u'permission']}
{u'id': u'/type/object/type', u'type': [u'/type/property'], u'/common/topic/image': [], u'name': [u'type']}
{u'id': u'/type', u'type': [u'/type/namespace', u'/type/domain'], u'/common/topic/image': [], u'name': [u'Metaweb System Types']}
{u'id': u'/type/type', u'type': [u'/type/type'], u'/common/topic/image': [], u'name': [u'Type']}
{u'id': u'/type/namespace', u'type': [u'/type/type'], u'/common/topic/image': [], u'name': [u'Namespace']}

然而,当我在Freebase查询编辑器中使用相同的查询时,它工作得很好。请参阅查询run here

有什么想法吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-03 01:44:22

您的查询有两个称为"type“的子句,它不是有效的JSON,因此也不是有效的MQL查询。大多数JSON解析器只会用第二个"type“子句覆盖第一个”type“子句,这意味着您实际上最终会运行以下查询:

代码语言:javascript
运行
复制
[{
  "id":            null,
  "name":          [],
  "/common/topic/image": [{}],
  "limit":         10,
  "type":      []
}]​

Try it out

您现在应该会看到与上面发布的结果相同的结果。这不是一个错误,这只是一个不太有趣的查询的结果。

为了绕过任何给定属性只有一个子句的限制,MQL允许向属性添加任意前缀,如"foo:type“或"bar:type”。如果您忘记自己添加它们,查询编辑器实际上会自动为您添加它们(但当您使用API时,您必须记住自己添加它们)。因此,您链接到的查询在查询编辑器中如下所示:

代码语言:javascript
运行
复制
[{
  "id":            null,
  "name":          [],
  "type":          "/people/person",
  "/common/topic/image": [{}],
  "limit":         10,
  "ns0:type":      []
}]​
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7983941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档