freebase如何提取所有公司的详细信息?

freebase how to extract all companies detailed information?

我想从 freebase 中提取所有公司的详细信息。我尝试使用 MQL 查询来做到这一点。但它从来没有给我返回超过 4100 条记录。我也尝试过使用游标,但使用游标我也可以获得相同数量的记录。

我用谷歌搜索了一下,有些人建议下载转储然后提取信息。这是唯一的方法吗?如果是,那么如何从转储中获取以下信息。非常感谢任何帮助。

[
  {
    "type": "/business/company",
    "name": null,
    "parent_company": [{}],
    "products": [].
    "industry": [].
    "founded": null,
    "net_income": [
      {
        "amount": null,
        "valid_date": null,
        "currency": null
      }
    ],
    "company_type": [],
    "headquarters": [{}],
    "number_of_employees": [{}],

    "/base/schemastaging/organization_extra/phone_number": [{}]
  }
]

首先,强制性警告。 Freebase 已经有好几个月只读了,很快就会被关闭。那里的数据已经过时了。

我得到该查询的计数为 4189,所以听起来您非常接近预期结果。另一方面,Freebase 中有超过 400,000 家企业,因此您可能真的不打算将查询仅限于那些具有净收入信息的企业。如果是这种情况,您可以通过将 "optional": true 添加到查询的该子句来修改查询。即

  "net_income": [{
    "amount": null,
    "valid_date": null,
    "currency": null,
    "optional": true
  }],

话虽如此,通过 API 查询 400K 是一个很大的数目。要从 Freebase 数据转储中获取相同的信息,只需过滤您在查询中包含的相同属性。

请注意,多年来对该模式进行了一些重要的重构,因此您查询中的某些内容不是当前首选的 属性 名称,而是较旧的别名。例如,/business/company 的当前名称是 /business/business_operation,而 /business/company/founded 实际上只是 /organization/organization/date_founded 的别名,所以这就是您要在转储。

在转储中,所有斜杠 (/) 都替换为点 (.),因此您可以使用如下 zgrep 命令进行过滤:

$ zgrep "organization\.organization.\parent" freebase-rdf-2015-04-19-00-00.gz
<http://rdf.freebase.com/ns/m.010b0njl> <http://rdf.freebase.com/ns/organization.organization.parent>   <http://rdf.freebase.com/ns/m.010d_x4z> .
<http://rdf.freebase.com/ns/m.010qw9c3> <http://rdf.freebase.com/ns/organization.organization.parent>   <http://rdf.freebase.com/ns/m.0110pjfc> .

$ zgrep "business\.business_operation\.industry" freebase-rdf-2015-04-19-00-00.gz
<http://rdf.freebase.com/ns/m.010b2kgs> <http://rdf.freebase.com/ns/business.business_operation.industry>   <http://rdf.freebase.com/ns/m.0c5mq>    .
<http://rdf.freebase.com/ns/m.010h6tq9> <http://rdf.freebase.com/ns/business.business_operation.industry>   <http://rdf.freebase.com/ns/m.02y_9m3>  .

对于调解器或 CVT,调解器的每一部分都有单独的一行。因此,例如,名称更改可能如下所示:

<http://rdf.freebase.com/ns/m.0q2g4kt>  <http://rdf.freebase.com/ns/business.company_name_change.end_date>  "2004"^^<http://www.w3.org/2001/XMLSchema#gYear>    .
<http://rdf.freebase.com/ns/m.0q2g4kt>  <http://rdf.freebase.com/ns/business.company_name_change.company>   <http://rdf.freebase.com/ns/m.06_dbm>   .
<http://rdf.freebase.com/ns/m.0q2g4kt>  <http://rdf.freebase.com/ns/business.company_name_change.start_date>    "1974"^^<http://www.w3.org/2001/XMLSchema#gYear>    .
<http://rdf.freebase.com/ns/m.0q2g4kt>  <http://rdf.freebase.com/ns/business.company_name_change.new_name>  "Cinar"@en  .