我正在尝试编写一个SELECT,它给了我表中的所有值.我有可选的值,我希望那些填充标准值,如果它们不存在.
这是我的代码:
SELECT * WHERE {
?a nmo:hasObject nm:coin
OPTIONAL
{ ?a nmo:hasAuthority ?b }
OPTIONAL
{ ?a nmo:hasMaterial ?c }}
Run Code Online (Sandbox Code Playgroud)
我得到的内容如下:
?a ?b ?c
1 yx
2 ab
3 xz bc
Run Code Online (Sandbox Code Playgroud)
如果没有值,我想要的是填充字符串"missing":
?a ?b ?c
1 yx "missing"
2 "missing" ab
3 xz bc
Run Code Online (Sandbox Code Playgroud)
有关如何构造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 }
}
Run Code Online (Sandbox Code Playgroud)