如何强制virtuoso sparql端点返回完整答案?

时间:2015-07-26 12:24:50

标签: sparql dbpedia virtuoso

我想查询DBpedia并使用Virtuoso。在一些结果太多的查询中,它只返回部分结果。例如,在下面的查询中,缺少谓词http://dbpedia.org/ontology/birthplace。有没有办法从Virtuoso或任何其他端点获得所有结果?

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>  . } 
        }

1 个答案:

答案 0 :(得分:1)

  

我想查询DBPeida并使用virtuoso。在某些查询结果太多的情况下,它只返回部分结果,例如在下面的查询中,缺少谓词http://dbpedia.org/ontology/birthplace。无论如何,从virtuoso或任何其他端点获得所有结果?

虽然我没有在您的问题中发现任何恶意或意味深长的内容,但您实际上是在考虑如何规避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