我制作了关于金正恩的第一份RDF(海龟)文件。我想过滤我的查询结果,所以只有他在1984年之前出生的男性兄弟姐妹才能出现,但我遇到了麻烦,因为这些出生年份都显示为文字。有谁知道我怎么能解决这个问题?
RDF海龟数据
(前缀已删除,因为我需要更多链接信誉点)
dbp:Kim_Jong-un dbp-ont:sibling wiki-en:Kim_Yo-jong.
wiki-en:Kim_Yo-jong dbp-ont:birthYear "1987^^xsd:gYear";
foaf:name "Kim Yo-jong";
foaf:gender "female".
SPARQL查询
SELECT *
WHERE {
dbp:Kim_Jong-un dbp-ont:sibling ?sibling.
?sibling foaf:gender ?gender.
?sibling foaf:name ?name.
?sibling dbp-ont:birthYear ?birthYear.
FILTER (?gender="male", ?birthYear<"1984")
}
答案 0 :(得分:1)
两个选项:
将文字的词法形式与作为字符串STR(?birthYear) < "1984"
给出的值进行比较(这会禁用通过数据类型的语义进行比较)
使用XPath构造函数获取给定字符串值的文字(?birthYear < xsd:gYear("1984"))
并且不要忘记使用&&
在FILTER
组合多个表达式!