sparql模式匹配

Dev*_*s50 5 rdf sparql pattern-matching

我正在学习一些sparql,我正在以下网站上练习并发表一些声明:

http://data.semanticweb.org/snorql

但是,我正在尝试执行以下语句:

SELECT DISTINCT ?author WHERE { ?paper swrc:author ?author FILTER(regex(?paper, "2006")) . } .
Run Code Online (Sandbox Code Playgroud)

它说没有结果.当我运行以下查询(没有过滤器):

SELECT DISTINCT ?paper WHERE { ?paper swrc:author ?author . }
Run Code Online (Sandbox Code Playgroud)

我看到有一些2006年的文章在其中.我想知道为什么第一个查询没有返回这些条目,其中有2006年的纸质字符串.

任何人都可以帮我这个吗?

cyg*_*gri 7

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

FILTER(regex(STR(?paper), "2006"))
Run Code Online (Sandbox Code Playgroud)

  • 还可以使用SWRC本体中的属性"SELECT DISTINCT?paper?year WHERE {?paper swrc:author?author"来查询一年.?paper swrc:year?year}`.不幸的是,2006年的论文似乎缺乏这个属性. (3认同)