2014-09-30 22 views
2

的SPARQL如何將類標籤顯示爲類的列名稱?

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

示出了兩列c0l0。任何方式只顯示一列c0,但?l0的內容作爲?c0的標題?其結果會是什麼樣子選擇?Co爲 ...

+0

如果'?l0'有很多值會發生什麼?您編寫查詢的方式,每個'?c0'可能至少有一個不同的'?l0'值。 – 2014-09-30 07:01:49

+1

可能相關[answers.semanticweb.com上的問題](http://answers.semanticweb.com/questions/15445/how-to-set-the-label-of-a-column-nameheader-as-in-sparql )。 – 2014-09-30 07:26:28

+2

'select?co {?x a 。可選{?x rdfs:label?co}}'?這聽起來像你只是想(i)爲標籤使用不同的變量(簡單)和(ii)不選擇綁定到事物(易)的變量。這個問題還有別的嗎? – 2014-09-30 11:39:32

回答

2

如果我理解正確的話,你可以用聚結,它返回它的第一個非誤差界爭論做到這一點。首先,這裏的一些數據,其中有一類:狗與標籤「狗」,和一類:貓它沒有標籤:

@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"     | 
----------------------------