SPARQL

SELECT ?c0 ?l0
WHERE
{
  ?c0 rdf:type <XXXX>.
  OPTIONAL
  {
    ?c0 rdfs:label ?l0.
  }
}

显示两列c0l0。有什么办法只显示一列c0,但以?l0的内容作为?c0的标题?结果看起来像选择?co as ...

最佳答案

如果我对您的理解正确,则可以使用 coalesce 来执行此操作,该返回其第一个不受错误限制的参数。首先,这是一些数据,其中有一个带有标签“Dog” :dog 类和一个没有标签的:cat 类:

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix : <http://example.org/> .

:dog a rdfs:Class ;
     rdfs:label "Dog" .
:cat a rdfs:Class .

这是查询和结果:

prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>

select (coalesce(?label,?class) as ?co) where {
  ?class a rdfs:Class
  optional {
    ?class rdfs:label ?label
  }
}

----------------------------
| co                       |
============================
| <http://example.org/cat> |
| "Dog"                    |
----------------------------

10-05 21:35