SPARQL - 如何将文字转换为整数,以便我可以过滤查询结果?

时间:2017-02-28 10:22:10

标签: filter sparql rdf

我制作了关于金正恩的第一份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")

}

1 个答案:

答案 0 :(得分:1)

两个选项:

  1. 将文字的词法形式与作为字符串STR(?birthYear) < "1984"给出的值进行比较(这会禁用通过数据类型的语义进行比较)

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

  3. 并且不要忘记使用&&FILTER组合多个表达式!