Точное совпадение переменной строки в SPARQL Wikidata Query Service - PullRequest
0 голосов
/ 26 декабря 2018

Точное совпадение переменной строки в SPARQL Wikidata Query Service при https://query.wikidata.org не дает ожидаемых результатов.

Я ожидал, что смогу сделать:

SELECT * {
  hint:Query hint:optimizer "None" .
  { SELECT DISTINCT (xsd:string(?author_name_) AS ?author_name) { wd:Q5565155 skos:altLabel ?author_name_ . } }
  ?work wdt:P2093 ?author_name .
} 

Но я не получаю возвращаемых результатов от службы запросов Wikidata:

Однако, если я использую сравнение "="Я могу сопоставить строки:

SELECT * {
  hint:Query hint:optimizer "None" .
  { SELECT DISTINCT (xsd:string(?author_name_) AS ?author_name) { wd:Q5565155 skos:altLabel ?author_name_ . } }
  ?work wdt:P50 wd:Q5565155 .
  ?work wdt:P2093 ?author_name__ .
  FILTER (?author_name = ?author_name__)  
} 

С текущими данными в Wikidata я получаю пять строк, возвращенных в этом запросе.

Другой способ получить эти данные - использовать BIND:

SELECT * {
  BIND("Knudsen GM" AS ?author_name)
  ?work wdt:P2093 ?author_name .
} 

Я полагаю, что с кастингом может быть что-то не так, поскольку это ничего не возвращает:

SELECT * {
  BIND(xsd:string("Knudsen GM") AS ?author_name)
  ?work wdt:P2093 ?author_name .
} 

Комбинации с xsd:string изменены на STR или не преобразованывообще в исходном запросе ни один не приводит к строкам результата.

...