SPARQL为缺少的字段生成值
我试图写一个SELECT,它给我一个表中的所有值。我有可选值,如果不存在,我希望用标准值填充这些值 这是我的代码: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 * 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