如何将类标签显示为类的列名?

时间:2014-09-30 06:55:46

标签: rdf sparql

SPARQL

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

显示两列c0l0。是否只能显示一列c0,但?l0的内容是?c0的标题?结果看起来像 select?co ...

1 个答案:

答案 0 :(得分:3)

如果我理解正确,您可以使用 coalesce 执行此操作,这将返回其第一个非错误绑定参数。首先,这里有一些数据,其中有一个:dog ,标签为&#34; Dog&#34; ,一个类 :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"                    |
----------------------------