Получить список всех записей людей из Википедии

В: Я пытаюсь получить список всех людей в Википедии вместе с их возрастом, датой рождения, датой смерти (если есть) и страной.

Я использую этот запрос dbpedia, который, кажется, возвращает только 50 000 результатов, что определенно неверно. Здесь отсутствуют многие записи, например. - Мик Джаггер и др.

SELECT ?person ?birthDate ?birthName ?occupation WHERE 
{
 ?person a <http://dbpedia.org/ontology/Person> .
 ?person dbpedia-owl:birthDate ?birthDate .
 ?person dbpedia-owl:birthName ?birthName .
 ?person dbpedia-owl:occupation ?occupation 
}

Я также пробовал некоторые из его вариаций -

  select ?Person 
  where {
  ?Person a dbpedia-owl:Person 
  }

Может ли кто-нибудь дать мне какое-то направление о том, как выполнить задачу? Я впервые использую DBPedia, поэтому, возможно, я упускаю что-то тривиальное.

Мне нужно как можно больше данных о людях на Земле. (may be millions of person with their age, country and birth_date) и 50k is very less number, а также отсутствуют некоторые имена, которые mandatory мне не нужны.


person Udit Gupta    schedule 14.10.2014    source источник
comment
Вы уже ознакомились с Политикой добросовестного использования в разделе 1.1 (wiki.dbpedia.org/OnlineAccess)? Может быть, эти ссылки помогают. Я думаю, вам нужно разделить ваш запрос. В качестве альтернативы: загрузите всю Википедию (например, через xowa.sourceforge.net) и извлеките данные из ваша локальная копия.   -  person Joachim Rohde    schedule 15.10.2014
comment
Я удалил немного информации о том, может ли кто-нибудь указать мне правильный ресурс, потому что открытые запросы ресурсов не относятся к теме переполнения стека.   -  person Joshua Taylor    schedule 15.10.2014


Ответы (1)


Сравнительно легко получить все триплеты о лицах:

select ?s ?p ?o { ?s a dbpedia-owl:Person ; ?p ?o }

В качестве альтернативы вы можете получить результаты обратно в виде графика RDF с запросом конструкции:

construct where { ?s a dbpedia-owl:Person ; ?p ?o }

Тем не менее, вы столкнетесь с некоторыми разумными ограничениями, налагаемыми общедоступной конечной точкой DBpedia. В конце концов, ваша местная библиотека может сделать бесплатные ксерокопии определенных страниц книг, но если вы вслепую попросите ксерокопии каждой автобиографии в здании, они будут правы, если откажут вам на том основании, что это несправедливо по отношению к вам. другие покровители. Вам нужно будет загрузить данные и запросить их локально, если вам нужны данные такого рода.

person Joshua Taylor    schedule 14.10.2014
comment
Спасибо. Можете ли вы также обновить свой ответ, указав, как разделить один и тот же запрос на несколько вызовов? Может быть, получить 50k за звонок возможно. Создание локального репо может быть неосуществимым вариантом - person Udit Gupta; 15.10.2014
comment
Хорошо.. понял, OFFSET нужно использовать. В любом случае спасибо :-) - person Udit Gupta; 15.10.2014
comment
Если вы используете offset, то вам также нужно использовать order by; в противном случае нет предсказуемого порядка, в котором вы компенсируете. - person Joshua Taylor; 15.10.2014
comment
Переполнение стека @UditGupta — это не только поиск ответа на исходный вопрос, но и более поздние пользователи, которые также находят вопрос. Если вы нашли решение своей проблемы, опубликуйте ответ и отметьте его как принятый. (Вполне нормально принять свой собственный ответ.) - person Joshua Taylor; 15.10.2014
comment
О да ты прав. Я нашел ошибку. Это не позволяет мне использовать OFFSET и ORDER By обоих. Ограничение было наложено на количество строк. Вот связанная статья, но почему-то эта тоже не работает для меня. https://github.com/mff-uk/DPUs/issues/78. Так что проблема так и не решена :-( - person Udit Gupta; 15.10.2014
comment
@UditGupta Что вы имеете в виду, что не можете использовать OFFSET и ORDER BY? Вам нужен ORDER BY при использовании OFFSET. Однако ORDER BY должен идти перед OFFSET. Например, select * { ... } ORDER BY ... OFFSET ... подходит, а select * { ... } OFFSET ... ORDER BY ... — нет. - person Joshua Taylor; 15.10.2014
comment
Я имею в виду, что в ORDER BY и OFFSET в целом нет ничего плохого, но DBPedia не позволяет мне запрашивать более 40 тысяч строк. Это именно то, что упоминается в ссылке на github, которую я разместил выше в предыдущем комментарии, и поэтому она даже не позволяет им использовать ORDER BY. - person Udit Gupta; 15.10.2014
comment
@UditGupta См. мой ответ на Как получить все компании из DBPedia? для решения этой проблемы. Проблема с github, на которую вы ссылались, на самом деле предлагает решение, и ответ в этом ответе почти такой же. - person Joshua Taylor; 15.10.2014