簡體   English   中英

如何在 SPARQL 中轉置查詢結果

[英]How to transpose the query result in SPARQL

我正在使用 TopBraid Composer 編寫 SPARQL 查詢。 我查詢了以下結果:

| Header    | Total     |
|--------   |-------    |
|           |           |
| A         | 5         |
|           |           |
| B         | 6         |
|           |           |
| C         | 7         |
|           |           |
| D         | 8         |

現在我謙虛的問題是我們是否可以以某種方式轉置結果如下:

| Header    | A     | B     | C     | D     |
|--------   |---    |---    |---    |---    |
| Total     | 5     | 6     | 7     | 8     |

是和否。 您使用的第一個符號對於理解 SPARQL SELECT 至關重要 - 每行代表數據上的一個單獨的圖形模式匹配,其中第一列顯示 ?Header 的綁定,第二列顯示 ?Total 的綁定,根據您未說明的查詢。 例如,在其中一個匹配項中,?Header 綁定到“A”而 ?Total 綁定到“5”。 另一個匹配是 ?Header = "B" 和 ?Total = "6" 等(我建議在 SPARQL 上做一些功課)

從那以后,任何計算 SPARQL 查詢的語言都有一些迭代結果集的方法,您可以將它們放在倒排表中,如圖所示。

所以,不,SPARQL 不能這樣做(查看 SPARQL 圖形模式匹配),但是您使用的任何語言都應該能夠迭代結果集以獲得您正在尋找的內容。

您可以使用過濾的左外連接查詢來構建您自己的轉置表(又名數據透視表)。

PREFIX wd: <http://cocreate-cologne.wiki.opencura.com/entity/>
PREFIX wdt: <http://cocreate-cologne.wiki.opencura.com/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX p: <http://cocreate-cologne.wiki.opencura.com/prop/>
PREFIX ps: <http://cocreate-cologne.wiki.opencura.com/prop/statement/>
PREFIX pq: <http://cocreate-cologne.wiki.opencura.com/prop/qualifier/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX bd: <http://www.bigdata.com/rdf#>

select ?item ?itemLabel ?enthalten_in1Label ?enthalten_in2Label ?enthalten_in3Label {
SELECT ?item ?itemLabel ?enthalten_in1Label ?enthalten_in2Label ?enthalten_in3Label  WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],de". }
  
  ?item p:P3 ?statement.
  ?statement ps:P3 wd:Q15.
  ?statement pq:P13 wd:Q17.
  
  OPTIONAL { ?item wdt:P11 ?buendnis. FILTER (?buendnis in (wd:Q32)) }
  OPTIONAL { ?item wdt:P11 ?sdgKarte. FILTER (?sdgKarte in (wd:Q14)) }
  OPTIONAL { ?item wdt:P11 ?agora.    FILTER (?agora    in (wd:Q3))  }
  BIND(?buendnis as ?enthalten_in1).
  BIND(?sdgKarte as ?enthalten_in2).
  BIND(?agora as ?enthalten_in3).
  #debug
  #Filter (?item in (wd:Q1))

} 
LIMIT 2000
} ORDER BY ?itemLabel

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM