SparQL

SPARQL(SPARQL Protocol and RDF Query Language),是為RDF開發的一種查詢語言和數據獲取協定,它是為W3C所開發的RDF數據模型所定義,但是可以用於任何可以用RDF來表示的信息資源。SPARQL 協定和 RDF 查詢語言(SPARQL)於2008年1月15日正式成為一項W3C推薦標準。SPARQL構建在以前的 RDF 查詢語言(例如 rdfDB、RDQL 和 SeRQL)之上,擁有一些有價值的新特性。

基本介紹

  • 外文名:SPARQL
  • 性質:查詢語言和數據獲取協定
  • W3C推薦標準:2008年1月15日
  • 功能:擁有一些有價值的新特性
優點,查詢表格,例子,

優點

SPARQL允許用戶針對可以被稱為“鍵值”數據的內容,或者更具體地說,遵循W3C的RDF規範的數據來編寫查詢。因此,整個資料庫是一組“主語 - 謂語 - 對象”三元組。這類似於一些NoSQL資料庫對術語“文檔鍵值”的使用,例如MongoDB。
在SQL關係資料庫術語中,RDF數據也可以被視為具有三列的表 - 主題列,謂詞列和對象列。 RDF中的主題類似於SQL資料庫中的實體,其中給定業務對象的數據元素(或欄位)放置在多個列中,有時分布在多個表中,並由唯一鍵標識。在RDF中,這些欄位表示為共享相同主題的單獨謂詞/對象行,通常是相同的唯一鍵,謂詞類似於列名稱,對象是實際數據。與關係資料庫不同,對象列是異構的:每單元數據類型通常由謂詞值暗示(或在本體中指定)。與SQL不同,RDF每個謂詞可以有多個條目;例如,可以為單個“人”提供多個“子”條目,並且可以返回這些對象的集合,例如“兒童”。
因此,SPARQL為數據提供了一整套分析查詢操作,例如JOIN,SORT,AGGREGATE,這些數據的模式本質上是數據的一部分,而不需要單獨的模式定義。但是,架構信息(本體)通常在外部提供,以允許明確地連線不同的數據集。此外,SPARQL為可以將其視為圖形的數據提供特定的圖形遍歷語法。
下面的示例演示了一個利用本體定義foaf(“朋友的朋友”)的簡單查詢。具體來說,以下查詢返回數據集中每個人的姓名和電子郵件:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>SELECT ?name        ?emailWHERE  {    ?person  a          foaf:Person .    ?person  foaf:name  ?name .    ?person  foaf:mbox  ?email .  }
此查詢將所有三元組與一個匹配的主題連線在一起,其中類型謂詞“a”是一個人(foaf:Person),並且該人具有一個或多個名稱(foaf:name)和信箱(foaf:mbox) )。
此查詢的作者選擇使用變數名稱“?person”來引用主題,以便於閱讀。由於三元組的第一個元素始終是主語,因此作者可以輕鬆使用任何變數名稱,例如“?subj”或“?x”。無論選擇何種名稱,在查詢的每一行上都必須相同,以表示查詢引擎要加入具有相同主題的三元組。
連線的結果是一組行 - ?person,?name,?email。此查詢返回?name和?email,因為?person通常是複雜的URI而不是人性化的字元串。請注意,任何?人可能有多個信箱,因此在返回的集中,?name行可能會多次出現,每個信箱一次。
此查詢可以分發到多個SPARQL端點(接受SPARQL查詢和返回結果的服務),計算和收集的結果,這個過程稱為聯合查詢。
無論是以聯合方式還是本地方式,查詢中的其他三重定義可以允許連線到不同的主題類型(例如汽車),以允許簡單查詢,例如,為驅動高速汽車的人返回名稱和電子郵件列表燃油效率。

查詢表格

對於從資料庫讀取數據的查詢,SPARQL語言為不同目的指定了四種不同的查詢變體。
SELECT查詢:用於從SPARQL端點提取原始值,結果以表格格式返回。
CONSTRUCT查詢:用於從SPARQL端點提取信息並將結果轉換為有效的RDF。
ASK查詢:用於為SPARQL端點上的查詢提供簡單的True / False結果。
DESCRIBE查詢:用於從SPARQL端點提取RDF圖,其內容留給端點根據維護者認為有用的信息來決定。
這些查詢表單中的每一個都使用WHERE塊來限制查詢,但是,在DESCRIBE查詢的情況下,WHERE是可選的。

例子

另一個SPARQL查詢示例模擬了“非洲所有國家/地區的資本是什麼?”的問題:
PREFIX ex: <http://example.com/exampleOntology#>SELECT ?capital        ?countryWHERE  {    ?x  ex:cityname       ?capital   ;        ex:isCapitalOf    ?y         .    ?y  ex:countryname    ?country   ;        ex:isInContinent  ex:Africa  .  }
變數用“?”表示 或“$”前綴。 將返回?capital和?country的綁定。
SPARQL查詢處理器將搜尋與這四種三元模式匹配的三元組集,將查詢中的變數綁定到每個三元組的相應部分。 這裡要注意的重要一點是“屬性方向”。為了使查詢簡潔,SPARQL允許以類似於Turtle的方式定義前綴和基URI。

相關詞條

熱門詞條

聯絡我們