2015-07-26 1 views
0

Я хочу запросить DBpedia и использовать Virtuoso. В некоторых запросах, результаты которых слишком велики, он возвращает только часть результатов. Например, в запросе ниже предикат http://dbpedia.org/ontology/birthplace отсутствует. Есть ли способ получить все результаты от Virtuoso или любой другой конечной точки?Как заставить virtuoso sparql endpoint вернуть полный ответ?

SELECT DISTINCT (?p AS ?outEdge) 
       (?q AS ?inEdge ) 
       (?px AS ?dest ) 
       (?qx AS ?source ) 
WHERE { 
      { <http://dbpedia.org/resource/England> ?p ?px . } 
      UNION 
      { ?qx ?q <http://dbpedia.org/resource/England> . } 
     } 
+0

Как именно вы выполнять ваш запрос? – svick

+3

Существует по уважительным причинам внутренний предел. Вы можете получить все данные, используя LIMIT в сочетании с OFFSET, шаблон, который иногда также называется разбиением на страницы через SPARQL. – AKSW

+0

благодарит за полезный комментарий. – user3070752

ответ

1

Я хочу запросить DBPeida и использовать виртуоз. В некоторых запросах, результаты которых слишком велики, он возвращает только часть результатов, например, в следующем запросе отсутствует предикат http://dbpedia.org/ontology/birthplace. В любом случае, чтобы получить все результаты от виртуоза или любой другой конечной точки?

Хотя я не обнаруживаю в вашем вопросе какого-либо злонамеренного или злонамеренного, вы, по сути, спрашиваете, как обойти защиту DBpedia от преднамеренных и непреднамеренных атак на отказ в обслуживании. Внутренние ограничения помогают гарантировать, что слишком много ресурсов не потребляется никаким конкретным запросом. Правильный способ получить все результаты запроса SPARQL, если они не все возвращены сразу, заключается в использовании предел, офсет и по и использовать несколько запросов. НАПРИМЕР,

#-- get first 10 results 
select ... where ... 
order by ?name 
limit 10 offset 0 

#-- get next 10 results 
select ... where ... 
order by ?name 
limit 10 offset 10 

#-- get more resuls 
select ... where ... 
order by ?name 
limit 10 offset 20