我想查询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> . }
}
答案 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