Соответствие строк в SPARQL?
в ANSI SQL вы можете написать что-то вроде:
Select * From DBTable Where DBTable.Description LIKE "MEET"
или
Select * From DBTable Where DBTable.Description LIKE "%MEET%"
то, что я хотел бы помочь, - это написать эквивалент SPARQL выше, пожалуйста.
2 ответов
использовать фильтр регулярных выражений. Вы можете найти короткий учебник здесь
вот как это выглядит:
PREFIX ns: <http://example.com/namespace>
SELECT ?x
WHERE
{ ?x ns:SomePredicate ?y .
FILTER regex(?y, "YOUR_REGEX", "i") }
YOUR_REGEX
должно быть выражение язык регулярных выражений XQuery
i
является необязательным флаг. Это означает, что матч нечувствителен к регистру.
если у вас есть фиксированная строка, вы можете использовать ее непосредственно в своем шаблоне графика, например
PREFIX ns: <http://example.com/namespace>
SELECT ?x
WHERE
{ ?x ns:SomePredicate "YourString" }
обратите внимание, что это не всегда работает, потому что сопоставление шаблонов основано на равенстве терминов RDF, что означает "YourString"
не считается тем же термином, что и say "YourString"@en
Так что если это может быть проблемой, используйте REGEX
подход говорит о том
также некоторые движки SPARQL предоставляют расширение полнотекстового поиска, которое позволяет интегрировать запросы стиля Lucene в ваш SPARQL запросы, которые могут лучше соответствовать вашему варианту использования и почти наверняка быть более эффективными для общего поиска, который в противном случае потребовал бы REGEX