2017-02-28 14 views
0

我做了我的第一个关于金正恩的RDF(龟)文件。我想过滤我的查询结果,以便只显示他在1984年之前出生的男性兄弟姐妹,但我遇到了麻烦,因为这些出生年份显示为文字。有谁知道我能如何解决这个问题?SPARQL - 如何将文字转换为整数,以便可以过滤我的查询结果?

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"值的词汇形式(这由数据类型的语义禁用比较)

  2. 使用XPath构造函数来获取字面对于给定的字符串值(?birthYear < xsd:gYear("1984"))

并且不要忘记用&&来结合FILTER中的多个表达式!

相关问题