SPARQL 为缺失字段生成值

标签 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

如果没有值,我想要的是用“缺失”的字符串填充它:

?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/

相关文章:

xml - rdf :resource, rdf:about 和 rdf:ID 的区别

java - 使用 Spring MVC 提供 Java 模型的 RDF 表示?

rdf - 如何在 JSON-LD 中表示备选方案的集合

sparql - 按天和月过滤 SPARQL 结果

node.js - Marklogic Node.js API : How to get the document where an embedded triple lives?

rdf - 我们可以使用猫头鹰:SameAs between two predicates?

java - 使用多个数据包将大量 XMP 数据插入 jpg?

java - SPARQL查询不检索java中的结果

geospatial - 使用 FILTER geof :sfContains or geof:sfIntersects or geof:sfOverlaps returns no results when run from Java:JenaParliament 进行 GeoSPARQL 查询

java - 从 SPARQL 结果中的文字中删除数据类型