Ошибка при выполнении запроса SPARQL с FILTER и LIMIT

Я использую 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 или это внутренняя ошибка конечной точки?

Учитывая, что он работает в Virtuoso 7.x (запустите ваш запрос здесь), это явно ошибка в Virtuoso 8.x - пожалуйста, сообщите об этой проблеме разработчикам Virtuoso.

UninformedUser 01.05.2018 18:34

Я использовал dbpedia-live.openlinksw.com/sparql вместо dbpedia.org/sparq, поскольку последний возвращал повторяющиеся даты рождения и был не так актуален! Так что мне приходится выбирать между повторяющимися датами и более сложной новой версией Virtuoso?

Ubercoder 02.05.2018 14:01

Также я попытаюсь выяснить, как сообщить об ошибке, но я не знаком с Virtuoso, кроме работы с конечными точками SPARQL.

Ubercoder 02.05.2018 14:05

У вас всегда есть возможность загрузить DBpedia в локальный тройной магазин по вашему выбору. Ясно, что проблемы с буквальными датами содержатся в дампе RDF, поэтому вам нужно будет выполнить некоторую очистку данных заранее, то есть перед загрузкой. Я также сделал это некоторое время назад, куча шаблонов регулярных выражений через sed

UninformedUser 02.05.2018 16:05

Я изучаю основы SPARQL, поэтому загрузка DBpedia в локальный магазин выходит за рамки моего опыта. Изначально я хотел извлечь полезные данные из DBpedia и использовать их для продвижения другого проекта, над которым я работаю.

Ubercoder 02.05.2018 17:22
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
5
388
2

Ответы 2

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

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

Звучит интересно. Не могли бы вы предоставить корректуру? Кстати, после замены эл. грамм. ORDER BY ?name с ORDER BY ?dob, запрос работает нормально (как кажется).

Stanislav Kralin 01.05.2018 19:20

О проблеме с FILTER + regex сообщалось еще в прошлом году. Мне нужно получить список рассылки, в котором указана отчетность. Комбо ORDER + FILTER - это всего лишь мое утверждение. Что меня удивило, так это ошибка безопасности. Орфографические ошибки - обычное дело, но проблема безопасности от Virtuoso ...

Gilles-Antoine Nys 01.05.2018 19:51
Что меня удивляет, так это ошибка безопасности - Я полагаю, что ssl - это скорее «государственный слот», чем «уровень защищенных сокетов» :)
Stanislav Kralin 01.05.2018 20:20

О боже .. Очевидно. Спасибо

Gilles-Antoine Nys 01.05.2018 20:23

По общему мнению, это ошибка, о которой известно уже 11 месяцев, есть ли какие-нибудь решения?

Ubercoder 02.05.2018 14:06

К сожалению, никаких подтверждений этому нет.

Gilles-Antoine Nys 02.05.2018 14:10

@Ubercoder, что-то вроде FILTER REGEX(?name,"[A-Z].*"). BIND (str(?name) AS ?name_) } ORDER BY ?name_ LIMIT 10 должно работать.

Stanislav Kralin 02.05.2018 20:38

Исходя из всеобщей помощи, ответ таков:

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

Другие вопросы по теме