Freebase mql_output搜索看似空洞的结果

时间:2014-10-19 03:24:17

标签: python freebase

我试图在Freebase中搜索化学元素的名称并返回其原子量,我试图让它与查询和mql_output一起使用。

这是我的代码:

service_url = 'https://www.googleapis.com/freebase/v1/search'
params = {
    'query': 'Helium',
    'key': freebase_key,
    'mql_output': '{"name":[],"/chemistry/chemical_element/atomic_mass":[]}',
    'limit': '5'
}
url = service_url + '?' + urllib.urlencode(params)
response = json.loads(urllib.urlopen(url).read())
for result in response['result']:
    logging.info('Result: {}'.format(result))

这是我在日志中得到的输出:

Result: {u'relevance:score': 107.16467299999999, u'name': [u'Helium'], u'/chemistry/chemical_element/atomic_mass': [None]}
Result: {u'relevance:score': 39.270966000000001, u'name': [u'Helium-3'], u'/chemistry/chemical_element/atomic_mass': []}
Result: {u'relevance:score': 38.038089999999997, u'name': [u'Liquid helium'], u'/chemistry/chemical_element/atomic_mass': []}
Result: {u'relevance:score': 32.367195000000002, u'name': [u'Isotopes of helium'], u'/chemistry/chemical_element/atomic_mass': []}
Result: {u'relevance:score': 28.453569000000002, u'name': [u'Star'], u'/chemistry/chemical_element/atomic_mass': []}

我正在寻找的,唯一的" Helium"具有与之关联的... / atomic_mass属性,应该给我原子质量,对吧?

相反,它只是说"无",而如果你看Freebase,它肯定有与之相关的原子质量属性。然而,另一个" Helium" s只返回空的方括号,所以至少看起来像我正在寻找的氦气那里有某种东西;我只是没有得到它。

知道这里发生了什么吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

您应该检查架构,不仅要查看要查询的类型和属性,还要查看预期的结果类型。

在这种情况下,期望的类型是https://www.freebase.com/chemistry/atomic_mass?schema=,它是一个包含两个值的对象,但没有名称(因此“无”结果)。

您可以将[]更改为[{}],但如果这不起作用,请查询您(或两者)感兴趣的“质量”或“不确定性”