在 sparql 中返回布尔值

Returning boolean values in sparql

从 rdf 文件中,我需要 return 如果他们的年龄是偶数,我需要为真,如果他们的年龄是奇数,则为假。我编写了查询以显示年龄相同的人,但需要修改以以布尔值显示结果。

select * where { ?x h:age ?age . 
         filter(    strends(?age, 0) || strends(?age, 2) || strends(?age, 4) || strends(?age, 6) || strends(?age, 8)  )
}

偶数测试是 ?X/2 = FLOOR(?X/2)

因此,如果 ?age 具有数字数据类型:

where { ?x h:age ?age . 
        BIND( (?age/2 =  FLOOR(?age/2)) AS ?isEven)
       }

会将 ?isEven 添加为 true/false。

如果 ?age 是字符串,则将 ?age 替换为 xsd:integer(?age)

我有一个类似的案例。如果存在可选关系,我需要在结果 true/false 中 return。

SELECT ?c ?hasNarrowMatch
WHERE {
?c a skos:Concept.
OPTIONAL {?c skos:narrowMatch ?nm}
BIND (exists{?c skos:narrowMatch ?nm} AS ?y)
BIND (IF(?y, "true", "false") AS ?hasNarrowMatch)
}

结果将如下所示:

+-----+----------------+
|  c  | hasNarrowMatch |
+-----+----------------+
| c1  | true           |
| c2  | false          |
| c3  | true           |
+-----+----------------+