【问题标题】:Query on sindice SPARQL endpoint在 sindice SPARQL 端点上查询
【发布时间】:2013-07-11 16:13:34
【问题描述】:

我尝试在 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 网关超时 服务器没有及时响应。 我做错了什么? 谢谢。

【问题讨论】:

标签: sparql endpoint http-status-code-504


【解决方案1】:

您提出的查询太难,端点无法及时回答,因此您收到超时响应。请注意,网站声明如下:

所有查询都受时间和资源限制。请注意,这意味着 有时你会得到不完整甚至没有结果。如果这是 经常发生在你身上,或者你真的想运行更复杂的查询 请联系我们

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

我相信 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

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

【讨论】:

  • 是的,Sindice 端点由 Virtuoso 提供支持,绝对推荐使用 bif:contains 谓词。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多