Ошибка запуска SPARQL-запроса с FILTER и LIMIT - PullRequest
0 голосов
/ 01 мая 2018

Я использую http://dbpedia -live.openlinksw.com / sparql / и выполняю запрос SPARQL, используя FILTER, ORDER BY и LIMIT. Вот запрос - он должен вернуть выборку людей, их имена и даты рождения:

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

но если я закомментирую свой ФИЛЬТР, используя #, запрос выполняется ОК. Кто-нибудь видел это раньше? В моем SPARQL есть неясная ошибка или это внутренняя ошибка в конечной точке?

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

На основании всеобщей помощи ответ:

  1. Конечная точка Virtuoso, в которой размещается http://dbpedia -live.openlinksw.com / sparql / , имеет ошибку, влияющую на FILTER и ORDER BY.

  2. Возможен обходной путь.

Код:

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, упорядочивает и ограничивает новую связанную переменную.

0 голосов
/ 01 мая 2018

На самом деле Virtuoso 8 не поддерживает запрос, который включает ORDER BY и FILTER.

Об этой проблеме сообщается с июня 2017 года.

...