поиск свободного текста в dbpedia - PullRequest
0 голосов
/ 29 июня 2018

Я хочу использовать поиск по свободному тексту в dbpedia и пытаюсь найти запрос, найденный на веб-сайте W3C: https://www.w3.org/2009/Talks/0615-qbe/

Если я попытаюсь выполнить запрос БЕЗ префикса bif:, закомментировав его, я получу сообщение об ошибке, показанное под запросом:

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>        
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX prop: <http://dbpedia.org/property/>
# PREFIX bif: <http://www.openlinksw.com/schemas/bif#>
SELECT ?lbl ?est
WHERE {
  ?country rdfs:label ?lbl .
  FILTER(bif:contains(?lbl, "Republic")) .
  ?country a type:Country108544813 ;
      prop:establishedDate ?est .
  FILTER(?est < "1920-01-01"^^xsd:date) .
}

Ошибка: строка 9, ошибка разбора: сопоставление пространства имен для "bif" не определено при расширении QName "BIF: содержит". [тип условия: sparql-lexer-error-namespace-mapping-not -fined]

хорошо: это имеет смысл, вам нужно определить свое пространство имен. Итак, позвольте мне повторить тот же запрос, используя префикс bif:, который я нашел на веб-сайте Virtuoso (и в других местах)

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>        
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX prop: <http://dbpedia.org/property/>
PREFIX bif: <http://www.openlinksw.com/schemas/bif#>
SELECT ?lbl ?est
WHERE {
  ?country rdfs:label ?lbl .
  FILTER(bif:contains(?lbl, "Republic")) .
  ?country a type:Country108544813 ;
      prop:establishedDate ?est .
  FILTER(?est < "1920-01-01"^^xsd:date) .
}

Теперь я получаю другую ошибку: кажется, что пространство имен bif: является защищенным именем Virtuoso

enter image description here

Так что, похоже, я не могу жить с bif: или без: bif. Кто-нибудь видел эту ошибку раньше? Спасибо.

Кстати: меня действительно не волнует bif: что я действительно хочу, так это делать запросы в свободном тексте к dbpedia. Так что любая альтернатива приветствуется. ДА: на SO есть более ранние вопросы по этому поводу, но обратите внимание, что каждый из этих ответов также содержит bif :.

Добавлено позже: просто чтобы быть уверенным, что я изменил bif: на bof: и теперь я получаю новую ошибку, которая показывает, что больше не является допустимым оператором. Увидеть ниже. Так или иначе: я думаю, что единственное, что меня волнует, это то, как: как вы делаете запросы в свободном тексте к dbpedia: -)

enter image description here

1 Ответ

0 голосов
/ 29 июня 2018

bif: - встроенная функция Virtuoso для «встроенной функции».

Вы проходите какой-то предварительный анализатор SPARQL, а не напрямую к конечной точке SPARQL, поэтому вам нужно определить префикс в своем запросе. Большинство таких предварительных парсеров будут делать правильно, если вы просто -

PREFIX  bif:  <bif:>

Кроме того, вы можете изменить свой запрос, используя функцию bif:contains -

FILTER(bif:contains(?lbl, "Republic"))

- использовать регулярное выражение SPARQL -

FILTER regex(?lbl, "Republic")
...