在 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 |
+-----+----------------+
从 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 |
+-----+----------------+