Точное совпадение переменной строки в 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
или не преобразованывообще в исходном запросе ни один не приводит к строкам результата.