1

我试图在http://sparql.sindice.com/上进行此查询

PREFIX rev: <http://purl.org/stuff/rev#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT *
WHERE
{
 ?thing rdfs:label ?name .
  ?thing rev:hasReview ?review .
 filter regex(str(?name), "harlem", "i")
} LIMIT 10

它返回 504 Gateway Time-out 服务器没有及时响应。我做错了什么?谢谢。

4

1 回答 1

2

您提出的查询对于端点来说太难及时回答,因此为什么您会收到超时响应。请注意,该网站声明以下内容:

所有查询都是时间和资源有限的。请注意,这意味着有时您会得到不完整甚至没有结果。如果您经常发生这种情况,或者您确实想运行更复杂的查询,请联系我们

您的查询实质上选择了大量数据,然后使引擎对任何可能的值运行正则表达式,这非常慢。

我相信 Sindice 使用 Virtuoso 作为他们的 SPARQL 实现,因此您可以作弊并使用 Virtuoso 特定的全文查询扩展,如下所示:

PREFIX rev: <http://purl.org/stuff/rev#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT *
WHERE
{
  ?thing rdfs:label ?name .
  ?thing rev:hasReview ?review .
  ?name bif:contains "harlem" .
} 
LIMIT 10

但是,此查询似乎也超时了,如果您可以添加更多条件来进一步限制您的查询,您将有更多机会及时获得结果。

于 2013-07-11T18:14:10.877 回答