我有一个SPARQL查询,可以选择1990年出生年份的人。我怎样才能从xsd:date格式获得年份?我可以看到如何使用year()从xsd:dateTime获取年份,但它不适用于xsd:date。
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT ?birthYear
WHERE
{dbr:Ilse_DeLange dbo:birthDate ?birth
#how to get year only as a integer?}
答案 0 :(得分:0)
根据规范,year()
仅适用于xsd:dateTime
文字。
根据三重商店的不同,您可能会先尝试转换为xsd:dateTime
:
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT DISTINCT (year(xsd:dateTime(?birthDate)) as ?birthYear) WHERE {
dbr:Ilse_DeLange dbo:birthDate ?birthDate
}
答案 1 :(得分:0)
要做到这一点,不要对xsd的扩展做任何假设:date需要一些字符串抨击。
您可以在?birthDate的词法形式上使用REPLACE将年份作为字符串,然后将其转换为xsd:integer。
REPLACE(str(?birthDate), "(\\d*)-.*", "$1")