2013-12-03 6 views
1

зададут вопрос, может быть, вы будете судить, как глупый вопрос, но это очень важно для меня:запросов SPARQL для понятий с разными названиями

предположит, что мы имеем понятие в онтологии научных дисциплин или любая конечная точка sparql, с именем, например: «Экологические науки». , если мы хотим выбрать все, что угодно, например, с помощью запроса SPARQL, используя «=» «содержит» или «регулярное выражение», но: предположим, что мы пишем «Науки о окружающей среде» поэтому мы не найдем ответов,

Мой вопрос в том, есть ли какие-либо решения для такого рода запросов?

Отношения.

+0

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

+1

Как уже было сказано, это слишком широкое, так как вы специально не определили _how_, вы бы хотели найти «аналогичный» результат. Однако возник недавний вопрос о том, как можно найти строковые результаты, имеющие хотя бы одно общее слово, [сопоставление строк с хотя бы одним общим словом] (http://stackoverflow.com/q/20203733/1281433), что может быть достаточно для вас, в зависимости от того, насколько ваши строки отличаются. –

+3

Конечно, можно спросить, есть ли лучшее решение любой проблемы, с которой вы столкнулись. Например, если вы создаете пользовательский интерфейс, почему бы не исследовать данные заранее и вместо того, чтобы вводить тип пользователя в строку, пусть пользователь выбирает из известных значений, например, в раскрывающемся списке? –

ответ

1

SPARQL 1.1 имеет поддержку для REGEX() функция внутри FILTER статья.

Вот пример из спецификации:

PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
SELECT ?name 
WHERE { ?x foaf:name ?name 
     FILTER regex(?name, "^ali", "i") } 

Он получает все ресурсы, которые имеют <http://xmlns.com/foaf/0.1/name> предикат значение, начиная с 'ali' строки

Смежные вопросы