SPARQL为缺少的字段生成值

Xaj*_*aju 3 rdf sparql

我正在尝试编写一个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以获得此输出的任何想法?

Jos*_*lor 5

我可能会在这里使用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)