在https://query.wikidata.org的SPARQL Wikidata Query Service中变量字符串的完全匹配未提供我期望的结果。
我期望我能做到:
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
或完全不进行转换的组合都不会产生结果行。