一、SPARQL語法簡介
SPARQL 是一種用於RDF上的查詢語言,他的名字是一個遞迴縮寫,代表「SPARQL Protocol and RDF Query Language(SPARQL協定與RDF查詢語言)」。它的標準化為全球資訊網協會的RDF資料存取工作小組(DAWG)所進行,被認為是語意網科技的一個關鍵。2008年1月15日,SPARQL正式成為一項W3C推薦標準。
一個SPARQL查詢由一些Triple組合、AND、OR,及選項組合所組成。
SPARQL可以讓使用者寫出廣域上非模糊的查詢。舉例來說明,以下的範例可查詢 本站中,所有擁有 標題 dc:title 及主題 dc:subject 兩個欄位的資料
PREFIX dc:<http://purl.org/dc/terms/>
SELECT ?object ?title ?subject WHERE {
?object dc:title ?title .
?object dc:subject ?subject .
}
LIMIT 80
說明:
- PREFIX dc:<http://purl.org/dc/terms/>
這一行定義了一個 前綴文字 dc 來代表 <http://purl.org/dc/terms/> ,也就是說 在接下來的查詢語法中, dc:title 等同於 <http://purl.org/dc/terms/title>- SELECT ?object ?title ?subject WHERE {
這一行裡的 ?object , ?title , ?subject 代表的是希望查詢結果中顯示的欄位,其中 問號 ? 用以表示變數,後面接自訂的欄位名稱- ?object dc:title ?title .
這一行稱為一個 Triple , 後面以 英文的句號 "."作為 Triple的結尾,要有空格分隔開。- WHERE{...}
查詢的條件語句,{...}裡面要放查詢條件的的 Triple,可以有多種的條件組合。本範例的查詢條件為 擁有 dc:title 與 dc:subject 的資料- LIMIT 80
限制只查詢 80筆資料
更詳細的介紹請見:https://www.w3.org/TR/rdf-sparql-query/#select
二、外部查詢說明
臺中學SPARQL 外部查詢的存取點為 http://data.digitalculture.tw/taichung/sparql
查詢參數
參數 | 說明 |
query |
SPARQL 查詢字串。 範例: |
output |
輸出格式,目前支援以下幾種格式:
|
機器查詢(非瀏覽器)時,根據不同的 http request headers 可回傳對應的格式,
如
Accept:application/rdf+xml => 回傳 RDF+XML格式的資料
Accept:text/csv => 回傳 CSV格式的資料
目前支援的格式:
- application/rdf+xml
- text/csv
- text/tab-separated-values
- text/turtle
關於 HTTP Request headers 可參考: https://msdn.microsoft.com/zh-tw/library/gg262187.aspx#sectionToggle0
三、本站SPARQL查詢參考
#查詢某一個藏品的標題
SELECT ?title
WHERE
{
<http://data.digitalculture.tw/taichung/aggregation/367> <http://purl.org/dc/terms/title> ?title .
}
#查詢 藏品的作者(不重複)
SELECT DISTINCT ?contributor
WHERE
{
?s <http://purl.org/dc/terms/contributor> ?contributor .
}
#查詢所有藏品的 title(標題) 及 subject(主題) 資料
PREFIX dc:<http://purl.org/dc/terms/>
SELECT ?title ?subject WHERE {
?object dc:title ?title .
?object dc:subject ?subject .
}
LIMIT 80