У меня есть следующий запрос SPARQL на Virtuoso:
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT DISTINCT ?p, ?title WHERE {
?p a ?c.
?c rdfs:subClassOf* wd:Q2431196.
?p rdfs:label ?title .
FILTER (bif:regexp_match("^Vamp( [(].*[)])?$", ?title))
}
На этой конечной точке SPARQL все работает нормально. Он возвращает телешоу «Вамп», а также «Вамп» (теленовелла), как и ожидалось.
Теперь я пытаюсь сделать то же самое на Java, используя API Jena, и это не удается следующим образом.
Исключение в потоке "main" com.hp.hpl.jena.query.QueryParseException: строка 10, столбец 204: имя с неразрешенным префиксом: bif:regexp_match
Я нашел решение избавиться от исключения Jena, как было предложено для bif:contains
. Тогда запрос будет следующим:
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT DISTINCT ?p, ?title WHERE {
?p a ?c.
?c rdfs:subClassOf* wd:Q2431196.
?p rdfs:label ?title .
?title <bif:regexp_match> "^Vamp( [(].*[)])?$"
}
Однако этот запрос не возвращает никаких элементов, как это делал предыдущий запрос. Он также не возвращает никаких элементов в веб-интерфейсе конечной точки SPARQL (как это делал предыдущий запрос).
Я делаю что-то неправильно? Как я могу правильно выразить это?
ps: использование FILTER REGEX( ?title, "^Vamp( [(].*[)])?$")
работает в конечной точке веб-SPARQL, но выдает следующую ошибку при использовании Java/Jena:
16 сентября 2015 г., 15:16:32.
Я думаю, что эта ошибка связана с ( )
символами..