SPARQL为缺少的字段生成值

SPARQL为缺少的字段生成值,sparql,rdf,Sparql,Rdf,我试图写一个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 如果没有值,我想用字符串“missing”填充它: ?a ?b

我试图写一个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
如果没有值,我想用字符串“missing”填充它:

?a ?b        ?c
1  yx        "missing"
2  "missing"  ab
3  xz         bc

关于如何构造SELECT以获得此输出,您有什么想法吗

SPARQL 1.1
BIND
IF
结合使用可实现以下目的:

选择*WHERE
{?nmo:hasObject nm:coin
可选的
{?a nmo:hasAuthority?b_tmp}
可选的
{?a nmo:hasMaterial?c_tmp}
绑定(如果(绑定(?b_tmp),?b_tmp,“缺失”)为?b)
绑定(如果(绑定(?c_tmp),?c_tmp,“缺失”)为?c)
}
我可能会在这里使用:

选择
A.
(合并(?b,?缺失)为?bb)
(合并(?c,?缺失)为?cc)
在哪里{
值?缺少{“缺少”}
?nmo:hasObject nm:coin
可选的
{?a nmo:hasAuthority?b}
可选的
{?a nmo:hasMaterial?c}
}

我尝试过这个方法,但我遇到了一个解析异常,我删除了?c之后的第二个},但它仍然存在。啊,对不起,我忘记分配变量了。现在修好了。但约书亚泰勒的答案确实更为简洁:D