Виртуоз Dbpedia, как и многие открытые конечные точки sparql, имеет ограничение по количеству результатов, которые он возвращает.Используйте LIMIT
и OFFSET
, чтобы получить результаты в пакетном режиме.Это даст вам вторую партию 10000:
SELECT * WHERE {
?s dbo:award ?o .
?o rdf:type ?C .
FILTER STRSTARTS(STR(?C), "http://dbpedia.org/ontology/Award")
}
LIMIT 10000
OFFSET 10000
Повторяйте со смещением 0, 10000, 20000 и т. Д., Пока результат не станет пустым.
PS.Поскольку ваш фильтр на самом деле соответствует URI полного типа, вы можете полностью удалить фильтр и просто сопоставить ?o rdf:type <http://dbpedia.org/ontology/Award>
(или эквивалентно: ?o rdf:type dbo:Award
) во втором условии.Это гораздо эффективнее.