語意網和關聯資料就像外太空:那裡沒有生命。 去那裡待上一段或多或少的時間…好吧,我不知道小時候他們會告訴你什麼來回應「我想成為一名太空人」。 但你可以觀察地球上正在發生的事情; 成為業餘天文學家甚至專業人士要容易得多。
本文將重點放在 RDF 儲存領域最近(不超過幾個月)的趨勢。 第一段的隱喻靈感來自於剪輯下的史詩級廣告影像。
史詩般的畫面

一、RDF 訪問的 GraphQL
GraphQL 聲稱是通用數據庫訪問語言。 以及使用 GraphQL 訪問 RDF 的能力如何?
開箱即用,這個機會由:
- 星狗(, );
- TopQuadrant 產品 (, ).
如果存儲庫不提供這樣的機會,則通過編寫適當的“解析器”(resolver)來獨立實現。 例如,這是在法國項目中完成的 . 或者你已經可以什麼都不寫了,只需要 .
從語義 Web 和關聯數據的正統擁護者的角度來看,所有這一切當然是令人難過的,因為它似乎旨在用於圍繞下一個數據孤島構建的集成,而不是合適的平台(當然,RDF 存儲) .
比較 GraphQL 和 SPARQL 的印像是雙重的。
- 一方面,GraphQL 看起來像是 SPARQL 的遠親:它解決了 REST 典型的重选和多重查詢問題——如果沒有這些,可能就無法考慮 查詢語言,至少對於網絡而言;
- 另一方面,GraphQL 的剛性方案令人不安。 因此,與 RDF 的完全反身性相比,它的“內省性”似乎非常有限。 並且沒有屬性路徑的模擬,所以它甚至不是很清楚為什麼它是“Graph-”。
二。 MongoDB 適配器
與前一個趨勢互補的趨勢。
- 現在在星狗 - 特別是,所有都在同一個 GraphQL 上 - 將 MongoDB 數據的顯示配置為虛擬 RDF 圖;
- GraphDB 最近 插入到 MongoDB 查詢的 SPARQL 片段中。
更廣泛地說,關於 JSON 源的適配器允許或多或少地“即時”將存儲在這些源中的 JSON 表示為 RDF,那麼我們也可以在相當長的一段時間內回憶起現有的適配器 可以調整 , 到 Apache 耶拿。
總結前兩個趨勢,我們可以說 RDF 存儲庫展示了在“多存儲”(多語言持久性)條件下集成和運行的充分準備。 然而,眾所周知,後者早已過時,取而代之的是 多重建模。 那麼 RDF 存儲領域的多重建模又如何呢?
總之,沒辦法。 我想單獨寫一篇文章來討論多模型 DBMS,但是現在你可以看到,現在還沒有“基於”圖模型(RDF 可以被認為是它的變體)的多模型 DBMS。 一些小型多模型——由替代 LPG 圖模型的 RDF 存儲支持——將在中討論 .
三、 OLTP 對比聯機處理程序
然而,同一個 Gartner 多建模是一個必要條件,主要是為了 手術室 數據庫管理系統。 這是可以理解的:在“多存儲”的情況下,主要問題出現在事務性上。
但是在 OLTP-OLAP 範圍內,RDF 存儲庫在哪裡? 我會這樣回答:不在那裡也不在這裡。 為了表明它們的用途,需要一些第三種縮寫。 作為一種選擇,我建議 聯機處理 — 在線智能處理。
然而,仍然:
- 在 GraphDB 中與 MongoDB 實現的集成機制並不是最不重要的 解決寫入性能問題;
- Stardog 走得更遠更徹底 引擎,再次以提高寫入性能為目標。
現在讓我向市場介紹一位新玩家。 來自 IBM Netezza 和 Amazon Redshift 的創建者 - . 文章開頭放了一張基於它的產品廣告的圖片。 AnzoGraph 將自己定位為 GOLAP 解決方案。 您如何看待帶有窗口函數的 SPARQL? —
SELECT ?month (COUNT(?event) OVER (PARTITION BY ?month) AS ?events) WHERE { … }四、 岩石數據庫
以上已經 到 Stardog 7 Beta 的公告,其中表示 Stardog 將使用 RocksDB 作為底層存儲系統——鍵值存儲,Facebook 的谷歌 LevelDB 分支。 為什麼值得談論某種趨勢?
首先,通過判斷 ,不僅RDF存儲庫被“移植”到RocksDB。 在 ArangoDB、MongoDB、MySQL 和 MariaDB、Cassandra 中都有使用 RocksDB 作為存儲引擎的項目。
其次,相應主題的項目(即非產品)是在RocksDB上做的。
例如,eBay 在中使用 RocksDB 為你的“知識圖譜”。 順便說一句,讀起來很有趣: 查詢語言最初是一種本土格式,但最近它已經轉變為更像 SPARQL. 就像一個笑話:無論我們做了多少知識圖譜,我們仍然得到 RDF。
另一個例子——出現在幾個月前 . 在引入之前,維基數據的歷史信息必須通過 到標準的 Mediawiki API。 現在在純 SPARQL 中有很多可能。 “引擎蓋下”還有 RocksDB。 順便說一句,WDHQS 做到了,看起來像參與將 Freebase 導入 Google 知識圖譜的人。
五、液化石油氣支持
讓我提醒您 LPG 圖和 RDF 圖之間的主要區別。
在 LPG 中,標量屬性可以附加到邊緣實例,而在 RDF 中它們只能附加到邊緣“類型”(但不僅是標量屬性,還有普通鏈接)。 與液化石油氣相比,RDF 的這種局限性 某種建模技術。 LPG 相比 RDF 的局限性更難克服,但是 LPG 圖比 RDF 圖更像是 Harari 教科書中的圖片,所以人們想要它們。
顯然,“支持液化石油氣”的任務分為兩部分:
- 對 RDF 模型進行更改,使其可以在其中模擬 LPG 構造;
- 對 RDF 查詢語言進行更改,使訪問此修改後的模型中的數據成為可能,或者實現以流行的 LPG 查詢語言查詢此模型的能力。
五.1. 數據模型
這裡有幾種可能的方法。
五.1.1。 單例屬性
協調 RDF 和 LPG 的最直接的方法可能是 :
- 而不是,例如,謂詞
:isMarriedTo使用謂詞:isMarriedTo1,:isMarriedTo2等等 - 這些謂詞然後成為新三元組的主題:
:isMarriedTo1 :since "2013-09-13"^^xsd:date等等 - 這些謂詞實例與一個共同謂詞的聯繫是由以下形式的三元組建立的
:isMarriedTo1 rdf:singletonPropertyOf :isMarriedTo. - 顯然那
rdf:singletonPropertyOf rdfs:subPropertyOf rdf:type,但考慮一下為什麼你不應該只寫:isMarriedTo1 rdf:type :isMarriedTo.
“LPG 支持”的任務在這裡在 RDFS 級別解決。 這樣的決定需要包含在相關的 . 支持附加結果的 RDF 存儲庫可能需要進行一些更改,但目前,Singleton Property 可被視為另一種建模技術。
五.1.2。 正確完成具體化
不那麼幼稚的方法源於對屬性實例由三元組完美實例化的認識。 通過能夠討論三元組,我們也可以討論屬性實例。
這些方法中最可靠的是 又名 RDR, 在 Blazegraph 的內部。 這是從一開始 為我自己和 AnzoGraph。 該方法的可靠性取決於以下事實:在其框架內 相應的變化 . 然而,要點非常簡單。 在 RDF Turtle 序列化中,您現在可以這樣寫:
<<:bob :isMarriedTo :alice>> :since "2013-09-13"^^xsd:date .五.1.3。 其他方法
您可以不用理會形式語義,只需考慮三元組有一些標識符,當然是 URI,並用這些 URI 組成新的三元組。 剩下的就是在 SPARQL 中授予對這些 URI 的訪問權限。 所以 星狗。
在快板中 以一種中間的方式。 眾所周知,Allegrograph 中三元組的標識符 ,但是當實現三重屬性時,它們不會突出。 然而,即使是形式語義也很遙遠。 值得注意的是,三元組屬性不是URI,這些屬性的值也只能是字面量。 液化石油氣的追隨者得到了他們想要的。 在專門發明的 NQX 格式中,類似於上面的 RDF* 示例如下所示:
:bob :marriedTo :alice {"since" : "2013-09-13"}五.2. 查詢語言
在模型級別以一種或另一種方式支持 LPG 後,您需要能夠在此類模型中查詢數據。
- Blazegraph for RDF* 查詢支持 и . SPARQL* 查詢如下所示:
SELECT * { <<:bob :isMarriedTo ?wife>> :since ?since }- Anzograph 還支持 並將支持 , Neo4j 中的查詢語言。
- Stardog 維護自己的 SPARQL 和 格林姆林。 您可以使用如下方式在 SPARQL 中獲取三元組的 URI 和“元信息”:
SELECT * {
BIND (stardog:identifier(:bob, :isMarriedTo, ?wife) AS ?id)
?id :since ?since
}- Allegrograph也支持自己的 SPARQL:
SELECT * { ("since" ?since) franz:attributesNameValue ( :bob :marriedTo ?wife ) }順便說一下,GraphDB 曾一度支持 Tinkerpop/Gremlin,但不支持 LPG,但在 8.0 或 8.1 版本中停止了。
六。 收緊許可證
最近沒有新增「選擇的三重儲存」和「開源三重儲存」集的交集。 新的開源 RDF 儲存距離成為日常使用的良好選擇還有很長的路要走,而我想使用的新 RDF 儲存(如 AnzoGraph)是閉源的。 相反,我們甚至可以談論減少......
當然,以前的開源也不是封閉的,只是一些開源的倉庫逐漸不被認為是值得選擇的了。 在我看來,擁有開源版本的 Virtuoso 充滿了錯誤。 Blazegraph 被 AWS 收購併構成了 Amazon Neptune 的基礎; 現在尚不清楚是否至少會再發布一次。 只剩下珍娜了……
如果開源不是很重要,只是想嘗試一下,那麼一切也沒有以前那麼美好了。 例如:
- 星狗 分發免費版(但是,普通版的試用期翻了一番);
- в 之前您可以選擇免費的基本計劃,但現已暫停新用戶註冊。
總的來說,對於一個普通的 IT 外行來說,空間變得越來越難以接近,它的發展正在成為企業的很多。
來源: www.habr.com
