我正在使用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中是否存在模糊错误,或者它是端点中的内部错误?
答案 0 :(得分:2)
实际上,Virtuoso 8不支持涉及ORDER BY
和FILTER
的查询。
此问题已于2017年6月报告。
答案 1 :(得分:1)
根据每个人的帮助,答案是:
托管http://dbpedia-live.openlinksw.com/sparql/的Virtuoso端点有一个影响FILTER和ORDER BY的错误。
可以进行解决。
代码:
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并对新绑定变量进行排序和限制。