Я хочу сделать запрос в SPARQL, возвращающий товар 2007 года Я попытался это:года() в SPARQL
String requete7String =
"PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> "
+ "PREFIX dc: <http://purl.org/dc/elements/1.1/> "
+ "PREFIX rss: <http://purl.org/rss/1.0/> "
+ "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "
+ "SELECT ?item "
+ "FROM <http://www.w3.org/2001/sw/SW-FAQ-feed.rdf> "
+ "WHERE { "
+ " ?item rdf:type rss:item . "
+ " ?item dc:date ?dateString ."
+ " bind(strdt(?dateString, xsd:dateTime) as ?date) "
+ " FILTER (year(?date) = 2007) "
+ "}";
Но это ничего не возвращает. Строка FILTER (year(?date) = 2007)
не работает. Тем не менее, я видел в документе SPARQL documentaiton, что функция year() принимает дату DateTime и возвращает целое число, поэтому вы можете сказать мне, почему это может не сработать?
Не видя данных, никто из нас не может точно сказать. Мое первоначальное предположение заключалось в том, что DateString не является легальной лексической формой для xsd: dateTime, поэтому функция дала ошибку.Если вы удалите фильтр и просто посмотрите на значения? dateString, что вы получите? –
Если я удалю «линию фильтра» и покажут дату и дату dateString: он возвращает: http://pastebin.com/z8FEW2KJ –
И если я добавлю «bind (year (? date) as? year)»: http://pastebin.com/mx7SfiP1. Функция year() ничего не возвращает. , –