使用FILTER和LIMIT运行SPARQL查询时出错

时间:2018-05-01 14:37:04

标签: sparql dbpedia

我正在使用http://dbpedia-live.openlinksw.com/sparql/并使用FILTER,ORDER BY和LIMIT运行SPARQL查询。这是查询 - 它应该返回一个人的样本及其姓名和出生日期:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?x0 ?name ?dob WHERE {
  ?x0 rdf:type foaf:Person.
  ?x0 rdfs:label ?name.
  ?x0 dbpedia-owl:birthDate ?dob.
  FILTER REGEX(?name,"[A-Z].*").
} ORDER BY ?name LIMIT 100

当我运行查询时,它返回一个内部错误:

Virtuoso VECSL Error VECSL: Internal error, ssl refd before set, please report query to support
SPARQL query:
define sql:big-data-const 0 
#output-format:text/html
define sql:signal-unconnected-variables 1 define sql:signal-void-variables 1 define input:default-graph-uri <http://dbpedia.org> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?x0 ?name ?dob
WHERE {
?x0 rdf:type foaf:Person.
?x0 rdfs:label ?name.
?x0 dbpedia-owl:birthDate ?dob.
FILTER REGEX(?name,"[A-Z].*").
} ORDER BY ?name LIMIT 100

但如果我使用#注释掉我的FILTER,则查询运行正常。谁看过这个吗?我的SPARQL中是否存在模糊错误,或者它是端点中的内部错误?

2 个答案:

答案 0 :(得分:2)

实际上,Virtuoso 8不支持涉及ORDER BYFILTER的查询。

此问题已于2017年6月报告。

答案 1 :(得分:1)

根据每个人的帮助,答案是:

  1. 托管http://dbpedia-live.openlinksw.com/sparql/的Virtuoso端点有一个影响FILTER和ORDER BY的错误。

  2. 可以进行解决。

  3. 代码:

    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
    SELECT DISTINCT ?x0 ?name2 ?dob WHERE {
      ?x0 rdf:type foaf:Person.
      ?x0 rdfs:label ?name.
      ?x0 dbpedia-owl:birthDate ?dob.
      FILTER REGEX(?name,"^[A-Z].*").
      BIND (str(?name) AS ?name2)
    } ORDER BY ?name2 LIMIT 100
    

    基本上它执行BIND并对新绑定变量进行排序和限制。