Я ищу способ сопоставить значения утверждений без учета регистра.
Например, в Викиданных есть следующее утверждение:
wd:Q1524522 wdt:P2002 'bouletcorp'
но, следуя случай, используемому в Twitter, предположим, что вместо этого я буду использовать значение Bouletcorp
, что даст следующий запрос и не может найти ни одного соответствующего объекта:
SELECT ?item WHERE {
?item wdt:P2002 "Bouletcorp" .
}
Решением может быть использование регулярного выражения с нечувствительным к регистру флагом следующим образом:
SELECT ?item WHERE {
?item wdt:P2002 ?twittername .
FILTER (regex(?twittername, "Bouletcorp", "i"))
}
но насколько менее эффективным будет этот запрос? Разве нет лучшего способа? Насколько я понимаю, этот запрос заставит движок SPARQL передавать все триплеты, имеющие значение запрошенного свойства, через регулярное выражение, что звучит неэффективно. Это еще не так медленно для P2002, но я предполагаю, что некоторые свойства, имеющие более миллиона совпадающих утверждений, могут быть проблематично, нет?
?s ?p ?v filter (lcase(?v) = 'the string')
, что не потребует введения полного сравнения регулярных выражений. Кроме того, вам не придется беспокоиться о том, содержит ли искомая строка символы, чувствительные к регулярным выражениям. - person Joshua Taylor   schedule 29.03.2017