使用筛选器和限制运行SPARQL查询时出错

使用筛选器和限制运行SPARQL查询时出错,sparql,dbpedia,Sparql,Dbpedia,我正在使用过滤器、ORDERBY和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/> SEL

我正在使用过滤器、ORDERBY和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

但是,如果我使用查询注释掉我的过滤器,则运行OK。以前有人见过这个吗?我的SPARQL中有一个模糊的错误,还是端点中有一个内部错误?

实际上,Virtuoso 8不支持包含ORDER BY和筛选器的查询


这一问题自2017年6月以来一直被报道。

基于大家的帮助,答案是:

主机所在的Virtuoso端点有一个影响筛选和排序方式的错误

一个变通办法是可能的

代码:


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

鉴于它在Virtuoso 7.x上工作,运行您的查询,这显然是Virtuoso 8.x中的一个错误-请将此问题报告给Virtuoso开发人员。我使用了而不是,因为后者返回了重复的出生日期,并且不是最新的!因此,我必须在重复日期和新版本的Virtuoso之间进行选择?同时,我将尝试找出如何报告错误,但除了运行SPARQL端点之外,我对Virtuoso并不熟悉。您总是有机会将DBpedia加载到您选择的本地三重存储中。显然,日期文字问题包含在RDF转储中,因此,您必须提前进行一些数据清理,即在加载之前。不久前我也做了这件事,通过sedI学习了一些正则表达式模式,我正在学习SPARQL的基础知识,因此将DBpedia加载到本地存储远远超出了我的经验。我最初想从DBpedia中提取有用的数据,并用它来推进我正在进行的另一个项目。听起来很有趣。你能提供一个链接吗?顺便说一句,更换e。GORDER BY?name和ORDER BY?dob,查询工作似乎很好。关于过滤器+正则表达式的问题早在今年就已经报告过了。我需要检索指定报告的邮件列表。组合顺序+筛选器只是我的语句。让我吃惊的是安全性错误。拼写错误是很常见的事情,但是来自Virtuoso的安全问题…让我吃惊的是安全错误-我想ssl是状态插槽而不是安全套接字层:哦,天哪。。明显地感谢you@Ubercoder,类似于FILTER REGEX?name,[A-Z].*。将str?name绑定为?name_}按?name_u}顺序限制10应该可以工作。
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