5

我目前正在学习一些 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 年的论文。我想知道为什么第一个查询没有返回 ?paper 字符串中有 2006 的这些条目。

谁能帮我解决这个问题?

4

1 回答 1

7

返回的 RDF 术语?paper都是 URI。过滤器REGEX功能不适用于 URI;它只适用于字符串。您可以使用该STR(…)函数将 URI 转换为字符串。这将起作用:

FILTER(regex(STR(?paper), "2006"))
于 2012-10-24T19:11:12.790 回答