2012-10-24 93 views
5

目前,我正在學習一些SPARQL,我練習下面的網站上有一些語句: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年的紙張字符串中。

任何人都可以幫助我嗎?

回答

7

?paper返回的RDF條款都是URI。 REGEX篩選器功能不適用於URI;它只適用於字符串。您可以使用STR(…)函數將URI轉換爲字符串。這將工作:

FILTER(regex(STR(?paper), "2006")) 
+3

人們也可以使用存在於SWRC本體''SELECT DISTINCT?paper?year WHERE {?paper swrc:author?author。 ?paper swrc:year?year}'。不幸的是,2006年的報紙似乎缺乏這種屬性。 – toniedzwiedz

+0

這是我一直在尋找的anaswer,謝謝! :) – Devos50