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 .
我想从 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 .