Сопоставление строк в SPARQL?

голоса
8

В ANSI SQL, вы можете написать что-то вроде:

Select * From DBTable Where DBTable.Description LIKE MEET

или

Select * From DBTable Where DBTable.Description LIKE %MEET%

То, что я хотел бы помочь с пишет в SPARQL эквивалент выше, пожалуйста.

Задан 17/06/2012 в 09:16
пользователем
На других языках...                            


2 ответов

голоса
10

Используйте регулярное выражение фильтра . Вы можете найти краткое руководство здесь

Вот как это выглядит:

PREFIX ns: <http://example.com/namespace>

SELECT ?x
WHERE
{ ?x ns:SomePredicate ?y .
  FILTER regex(?y, "YOUR_REGEX", "i") }

YOUR_REGEXдолжен быть выражением языка регулярных выражений XQuery

iявляется необязательным флаг . Это означает , что матч не чувствителен к регистру.

Ответил 17/06/2012 в 09:45
источник пользователем

голоса
4

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

PREFIX ns: <http://example.com/namespace>

SELECT ?x
WHERE
{ ?x ns:SomePredicate "YourString" }

Обратите внимание , это не всегда работает , потому что сопоставление с образцом на основе RDF термина равенства , которое означает , что "YourString"не считается один и тот же термин , как сказать "YourString"@enтак , если это может быть проблемой использовать REGEXподход Том предполагает

Кроме того, некоторые двигатели SPARQL обеспечивают расширение полнотекстового поиска, который позволяет интегрировать запросы стиля Lucene в запросы SPARQL, которые могут лучше подходят вашему случаю использования и почти наверняка будут более эффективны для общего поиска, которые в противном случае потребовались бы REGEX

Ответил 17/06/2012 в 18:37
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more