我正在尝试编写一个 SELECT,它为我提供了表中的所有值。我有可选值,如果它们不存在,我希望用标准值填充它们。
这是我的代码:
SELECT * WHERE {
?a nmo:hasObject nm:coin
OPTIONAL
{ ?a nmo:hasAuthority ?b }
OPTIONAL
{ ?a nmo:hasMaterial ?c }}
我得到的 id 如下:
?a ?b ?c
1 yx
2 ab
3 xz bc
如果没有值,我想要的是用“缺失”的字符串填充它:
?a ?b ?c
1 yx "missing"
2 "missing" ab
3 xz bc
关于如何构造 SELECT 以获得此输出的任何想法?
最佳答案
我可能会使用 coalesce这里:
SELECT
?a
(coalesce (?b, ?missing) as ?bb)
(coalesce (?c, ?missing) as ?cc)
WHERE {
VALUES ?missing { "missing" }
?a nmo:hasObject nm:coin
OPTIONAL
{ ?a nmo:hasAuthority ?b }
OPTIONAL
{ ?a nmo:hasMaterial ?c }
}
关于SPARQL 为缺失字段生成值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41910557/