Skip to main content
 首页 » 编程设计

python之sparql 查询 sparql.query().convert() 有时在 Virtuoso SPARQL 查询编辑器上给出输出时抛出异常

2025年05月04日8linjiqin

我正在运行 sparql 查询

    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
 
    SELECT DISTINCT(?film_link) ?film_name ?wikipage 
    WHERE { 
    ?film_link rdf:type <http://dbpedia.org/ontology/Film> . 
    ?film_link foaf:name ?film_name . 
    ?film_link foaf:page ?wikipage . 
 
    } LIMIT 10000 OFFSET  num 

此查询在 for 循环 [0,9999,19999,29999,39999,49999] 中运行
有时 results = sparql.query().convert() 会抛出异常。
有些给出结果,有些则没有。当我在 Virtuoso SPARQL 查询编辑器上运行这些查询时,所有查询都返回数据......有人知道吗?

请您参考如下方法:

问题在于 Distinct。

当使用不同的查询快捷方式/优化是有限的,如果你有很多结果,你的查询可能会超时(取决于服务器负载)

您可以查看此 DBpedia 线程以了解其他替代方案/优化 http://sourceforge.net/mailarchive/message.php?msg_id=28653250

另外,distinct 需要更多的服务器资源。根据查询,它可能必须评估所有结果 - 即使您要求限制 - 并且可能导致查询超时(取决于当前服务器负载)。 我不确定您的查询是否属于这种情况...