2015-11-10 3 views
1

Я хочу извлечь все компании подробную информацию из freebase. Я попытался сделать это с помощью запросов mql. Но он никогда не возвращает мне более 4100 записей. Я также пытался использовать курсоры, но с курсорами также могу получить такое же количество записей.freebase, как извлечь все компании подробную информацию?

У меня есть googled, и некоторые люди предлагают загрузить дамп, а не извлекать информацию. Это единственный способ? если да, то как получить следующую информацию с дампа. Любая помощь высоко ценится.

[ 
    { 
    "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": [{}] 
    } 
] 

ответ

1

Во-первых, обязательное предупреждение. Freebase был доступен только для чтения в течение многих месяцев и вскоре будет закрыт. Данные там устарели.

Я получаю счет 4189 для этого запроса, так что кажется, что вы близки ожидаемым результатам. С другой стороны, в Freebase работает более 400 тыс. Бизнес-компаний, поэтому, возможно, вы не намерены ограничивать свой запрос только теми, у кого есть информация о чистом доходе. Если это так, вы можете изменить свой запрос, добавив "optional": true к этому предложению запроса. т.е.

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

Сказав это, 400K очень сложно запросить через API. Чтобы получить ту же информацию из дампа данных Freebase, просто отфильтруйте те же свойства, которые были включены в ваш запрос.

Обратите внимание, что за эти годы произошла значительная реорганизация этой схемы, поэтому некоторые из ваших запросов не являются в настоящее время предпочтительными именами свойств, а скорее старыми псевдонимами. Например, текущее имя для/business/company is/business/business_operation и/business/company/основано на самом деле просто псевдонимом для/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> . 

Для посредников или вариаторов, будет отдельная линия для каждая часть посредника. Так, например, изменение имени может выглядеть так:

<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 . 
+0

Спасибо, что, похоже, что будет работать с дампом. как я могу извлечь id всех компаний и сохранить в CSV-файле? – faisalbhagat

+0

Если вы хотите сделать это из оболочки, комбинируя zgrep с разрезом и сортировкой -u, должен сделать трюк. Если вы предпочитаете использовать программу, повторите эту логику на своем любимом языке программирования. –

Смежные вопросы