我正在学习一些sparql,我正在以下网站上练习并发表一些声明:
http://data.semanticweb.org/snorql
但是,我正在尝试执行以下语句:
SELECT DISTINCT ?author WHERE { ?paper swrc:author ?author FILTER(regex(?paper, "2006")) . } .
它说没有结果。当我运行以下查询(没有过滤器)时:
SELECT DISTINCT ?paper WHERE { ?paper swrc:author ?author . }
我看到有一些论文在2006年的字符串中。我想知道为什么第一个查询没有返回这些条目,其中有2006年的纸质字符串。
有人可以帮我吗?
答案 0 :(得分:7)
为?paper
返回的RDF术语都是URI。 REGEX
过滤器功能不适用于URI;它只适用于字符串。您可以使用STR(…)
函数将URI转换为字符串。这将有效:
FILTER(regex(STR(?paper), "2006"))