Solid資料自有的去中心化語義網

買賣虛擬貨幣
Solid 是一個令人興奮的新專案,由全球資訊網發明者 Tim Berners-Lee 爵士在麻省理工學院啟動。 該專案旨在從根本上改變 Web 應用程式的中心化趨勢, 它將真正地讓資料所有權屬於使用者,並改善隱私問題。在 SoLiD 生態中,你可以自由選擇將你的資料存在哪裡。這些資料包括但不限於你拍攝的照片,發表的評論、地址簿聯絡人或日曆上的事件。這些都是儲存在 SoLiD Pod 中的,這個 POD 可以是你家裡的,也可以是你公司的,甚至其他線上 POD 提供商也可以。因為你擁有資料的所有權,所以你可以隨時隨地無障礙的移動資料,而不受服務商干擾。你必須授權許可權給第三方應用後,他們才能對你的 POD 進行讀寫。所以當你註冊一個新應用後,你不必再重複填寫你的個人資訊,因為這些都可以從 SoLiD Pod 中直接讀取。在 A 應用中儲存的資料,在 B 應用中也可以訪問,你不必手動同步,因為你的資料會永遠跟著你。

這些措施不僅保護了你的隱私,還對開發者有非常大的好處。因為他們可以擁有大量資料,避免了冷啟動的過程。

你的 POD 就相當於你的個人網盤

你可以在 SoLiD 中儲存任何東西。PODs 就像是一個基於 Web 的 USB,而且還可以隨時訪問。當你給了其他人訪問你資料的許可權後,他們可以對你的照片、文章進行互動。你可以控制哪些應用和哪些人可以看到你的資料。

你可以把 POD 想象成你的一個私人網站,但是其中的資料可以和你信任的應用進行互動,這意味著你對自己的資料有一個完全可控的 API 可以操作。當你評論了網上的一個影片後,你的朋友們可以在任意應用中看到這條評論,例如照片檢視器或社交應用的資訊流。這都是你的資料,他們可以以任何形式展示。

你可以擁有無限個 POD,只要有 SoLiD 伺服器的地方,他們就可以被訪問。

你的 POD 就相當於你在網際網路上的身份

為了證明你擁有你的資料,你需要擁有一個身份。在 SoLiD 中,Pod 就是證明你是誰的一個工具(不用依靠任何第三方公司)。所以在未來, "使用微信登入"、“使用微博登入” 會變成 “使用 SoLiD Pod 登入”。

SoLiD 具體技術細節

solid 是社交 web 應用程式的分散平臺。在 solid 平臺中, 使用者的資料獨立於建立和使用此資料的應用程式進行管理。每個使用者都將其資料儲存在 web 可訪問的個人線上資料儲存區 (或 pod) 中。每個使用者可以有一個或多個來自不同 pod 提供程式的 pod, 並且可以輕鬆地在提供程式之間切換。應用程式使用定義良好的協議訪問使用者 pod 中的資料, 分散的身份驗證和訪問控制機制保證了資料的隱私。在這種分散的體系結構中, 無論使用者資料儲存在何處, 應用程式都可以對其進行操作。使用者控制對其資料的訪問, 並可以隨時在應用程式之間切換。我們將從終端使用者和應用程式開發人員的角度演示 solid 的效用以及它是如何實現的。為此, 我們將使用一組 solid 伺服器和使用這些伺服器的多個 web 應用程式。我們相信, 使用 solid 這樣的具體平臺的經驗對於真正瞭解分散的社交網路的力量非常有價值。

1. 介紹和背景

社交網路應用程式, 如 Facebook,Twitter,Doodle, Wikipedia, Craigslist,他們中多數將資料儲存在可被視為 "資料孤島" 的集中儲存儲存庫中。每個應用程式 (或基於一個社交網路平臺的一組應用程式) 控制自己的資料, 並且通常有自己的身份驗證和訪問控制機制。因此, 使用者無法輕鬆地在允許重用其資料的類似應用程式之間切換, 也無法從一個資料儲存服務切換到另一個資料儲存服務。開發人員僅限於特定平臺提供的資料訪問 api, 並且無法輕鬆開發可在多個平臺上執行的應用程式。這些和其他集中化的問題已經認識到很長時間了, 有許多關於 "重新下放" 社會網路的建議, Diaspora, Musubi , and WebBox , 等。但這些建議都尚未被廣泛透過。

圖:SoLiD 平臺。使用者將他們的資料儲存在個人線上資料儲存(pod)中,該個人線上資料儲存駐留在 pod 伺服器上。使用者使用儲存在其 pod 中的 RDFprole 文件控制他們的身份。要使用 SoLiD 應用程式,使用者從應用程式提供程式載入應用程式。使用者從應用程式提供程式載入應用程式。應用程式從使用者的身份資訊獲取使用者的 pod。然後,它遵循身份資訊的連結來發現使用者 pod 以及其他 pod 上的資料,並在需要時執行身份驗證。

去中心化平臺的技術細節仍然是研究人員和從業人員調查的課題。例如, w3c 讓社會網路工作組積極調查權力下放標準.

我們目前在這個空間的活動圍繞著一個平臺, 我們稱之為 solid (Social Linked data) [7]。solid 平臺支援分散的社交 web 應用程式, 儘可能依靠 w3c 標準和語義 web 技術來實現圖 1 所示的體系結構。該平臺指定圖中所需的所有協議, 如身份驗證、應用程式到伺服器和伺服器到伺服器的通訊。本演示展示了 solid 平臺, 重點介紹了終端使用者和應用程式開發人員的體驗。特別是, 我們透過一組支援這些應用程式的應用程式和伺服器來證明, solid 支援應用程式之間的高度互操作性、應用程式之間輕鬆共享資料和社交圖, 以及伺服器之間資料交換的便捷性。

圖:pod 伺服器概述。pod 儲存 rdf 和非 rdf 資源。伺服器支援 ldp、修補資源、訪問控制、實時更新和 sparql。

*Sparql 是 RDF 查詢語言
http://www.chinaw3c.org/REC-sparql11-overview-20130321-cn.html

*REST 是一 種全球資訊網軟體架構風格
http://www.drdobbs.com/web-development/restful-web-services-a-tutorial/240169069

這些功能透過標準應用程式 (如維護使用者的聯絡人列表) 和由 SoLiD 啟用的更新穎的應用程式 (如協作創作學術文章) 進行演示。我們正在開發 SoLiD 平臺, 作為我們Crosscloud專案的一部分, 該專案旨在應對與構建分散的社交網路有關的研究挑戰。

線上上選擇好協議對於交叉雲來說是必不可少的, SoLiD 提供了這樣的協議。除了設計協議外, crosscloud 專案還必須解決幾個研究問題。例如, 應用程式應使用哪些資料模型和設計模式來儲存資料?我們如何確保應用程式就其使用的概念的詞彙達成一致, 以及如何在需要時整合來自不同應用程式的資料?支援從應用程式到應用程式的通知的最佳方法是什麼?一個有趣的研究主題是 web 遍歷和複雜資料檢索在多大程度上可以從客戶端解除安裝到伺服器。支援應用程式開發人員對於圍繞交叉雲生態系統建立勢頭也很重要。此外, 適當的安全和隱私模型對於社交網路至關重要, 而權力下放使圍繞這些模型的問題變得更加複雜 。而 SoLiD 為解決這些問題提供了思路。

2. SoLiD 的概念

在 SoLiD 平臺中, 每個使用者都將其資料儲存在 web 可訪問的個人線上資料儲存 (或 pod) 中。應用程式在瀏覽器中作為客戶端 web 應用程式執行, 或作為移動應用程式執行。這些應用程式使用身份驗證協議來發現使用者的標識和配置檔案資料, 以及指向使用者的 pod (其中包含應用程式資料) 的相關連結。SoLiD 支援分散身份驗證和訪問控制, 還支援標準化的資料訪問機制。接下來我們將描述這兩個方面。

分散身份驗證、全域性 id 空間和全域性單點登入是 SoLiD 生態系統的重要組成部分。SoLiD 使用 webid [8] 來提供這些功能, 儘管存在其他解決方案, 並且可能與 SoLiD 進行互操作。在 SoLiD 中, 使用者必須向標識提供程式註冊, 並且此標識提供程式儲存與加密金鑰關聯的使用者的 weid 配置檔案文件。在大多數情況下, pod 提供商也將作為標識提供商執行, 向其使用者提供 webid "帳戶"。

表 1: pod 伺服器。databox.me 、 meccano.io 和 rwww.io 充當公共 pod 伺服器以及標識提供程式, 允許使用者建立 web id。

solid 中的應用程式資料儲存在使用者的 pod 中,pod 則儲存在 pod 伺服器上。根據連結資料平臺 (ldp) 建議的定義, 以 restful 方式管理資料。ldp 使應用程式能夠管理分層容器中的資料項 (也可以稱為集合或目錄)。每個資料項和容器都有一個 uri, ldp 定義了透過其 uri 上的 http 請求運算元據項和容器的協議;例如, 要建立的 psts/put、要更新的 put/patch 和要檢索的 get。專案可以透過其 uri 找到, 也可以透過以下其他專案的連結找到。solid 區分了使用 rdf 在 solid 中表示的結構化資料和可用於任何型別的非結構化資料 (如影片、影象、網頁)。這允許以各種格式 (如 Turtle 或 JSON-LD) 對結構化資料進行分析和序列化。

除了 ldp 支援外, pod 伺服器還可以提供可選的 sparql 支援。支援 sparql 的伺服器允許應用程式表示複雜的資料檢索操作, 包括需要透過鏈路跟蹤 sparql 進行伺服器到伺服器通訊的操作。這簡化了 SoLiD 應用程式開發, 因為它使開發人員能夠將複雜的多 pod 資料檢索操作委託給伺服器。

solid 中的 pod 伺服器與應用程式無關, 因此無需修改伺服器即可開發新的應用程式。例如, 即使 ldp 1.0 不包含特定於 "社交" 的內容, 但許多 w3c 社交 web 工作組使用者情景可以在 solid 中實現, 僅使用 ldp 和應用程式邏輯, 而不會對伺服器進行任何更改。

pod 伺服器的要求如圖 2 所示。pod 伺服器需要儲存 rdf 和非 rdf 資源, 並且需要支援對這些資源的基本 ldp 訪問、修補資源、訪問控制列表 (acl)、實時更新和 (可選 sparql)。有幾種方法可以在 pod 伺服器中實現 rdf 資料的基礎儲存, 例如, 使用檔案系統、鍵值儲存、關聯式資料庫系統或圖形資料庫系統 (即 triple/quad 儲存)。

我們已經實現了幾個原型伺服器, 如表 1 所示。我們的 ldphp、gold和 ldnode 伺服器將其所有資料儲存在檔案系統中。在這種情況下, rdf 和非 rdf 資源都儲存為檔案, 包括表示 acl 的 rdf 資源和與非 rdf 資源相對應的後設資料文件 (所有這些都由 ldp 定義)。我們的 meccano 伺服器將 rdf 資料儲存在圖形資料庫系統中 (目前我們使用 jena), 並將非 rdf 資料儲存在檔案系統中。meccano 透過 sparql 查詢實現所有 solid 操作, 它還使用連結跟蹤 sparql 實現複雜的資料檢索。使用 rdf 資料庫簡化了大型資料集的查詢、高效的資料檢索 (即圖形子集) 以及修補程式操作。

3. SoLiD 開發技術的發展

在本節中, 我們將討論 solid 中的應用程式開發, 並舉例說明我們已經實現的 SoLiD 應用程式。目的是展示 solid 的基本結構的靈活性和權力下放的好處。

SoLiD 技術的發展依賴於可靠的組庫和元件的支援。

例如, 我們開發的所有應用程式都使用 rdflib.js 庫 (來自 tabulator  的核心庫) 來處理 rdf 資源。另一個庫是 solid. js, 它透過抽象一些更復雜的操作來簡化 SoLiD 應用程式的開發。我們還提供了用於身份驗證和註冊的模組, 這些模組設計用於作為 web 元件重用。我們不斷地擴充套件 solid 生態系統中的庫和元件集, 我們預計這將顯著加快 solid 的採用。

我們已經為常見的日常任務開發了幾種 SoLiD 應用程式, 如表 2 所示。其中一些應用程式使用 angularjs 和 jquery 框架, 它在應用程式互動性方面提供了一組經過驗證的功能。在此演示中, 所有應用程式都是作為響應式 web 應用程式開發的, 並在 firefox 和 chrome 中進行了測試。contacts 和 dokieli 應用程式的螢幕截圖如圖 3 和圖 4 所示。接下來我們將介紹這兩個應用程式。

* vCards 是一個/一組電子名片

通訊錄應用程式管理儲存在使用者 pod 上的聯絡人列表。在 solid 中, 使用者的社交圖由儲存在其 pod 上的聯絡人、這些聯絡人的聯絡人等組成, 其中每個使用者都由 webid 標識。因此, 聯絡人可以被看作是管理使用者分散式社交圖的介面。通訊錄應用程式使用 vCards 本體技術為使用者的聯絡人維護一組 vCards。每個 vcard 都是具有唯一 uri 的資源, 除了名稱和電子郵件等其他欄位外, 還可以包含它所代表的使用者的 web id。使用者可以將 vcard 標記為公共, 也可以允許個人或一組人訪問 vcard (由 webid 標識)。

在我們的通訊錄應用程式中, 由 solid 啟用的一個有趣的社交功能是能夠使用連結跟蹤 sparql 在 "您的聯絡人的聯絡人" 中搜尋。使用者可以在其 pod 中搜尋符合姓名、電子郵件或地址等搜尋條件的 vcard。此外, 通訊錄應用程式可以使用連結跟蹤 sparql 查詢在 pod 上的公共聯絡人中搜尋可從使用者 vCards 中的 webid 訪問的聯絡人 (透過以下連結)。使用者獲取與搜尋條件匹配的 vCards 列表, 每個應答 vCards 的 uri 指示此名片的來源。這種搜尋功能提供了一個由分散的社交平臺 (如 solid) 支援的創新社交功能的示例。

圖 3: 通訊錄應用程式使用 ldp 維護一組 vCards, 並使用連結跟蹤 sparql 在使用者的 pod 和從這些 vCards 中的 webid 到達的 vCards 中搜尋 vCards。

圖 4:dokieli 是一種通用的創作和互動工具。

dokieli 是一個分散的文章創作、註釋和社交通知應用程式。雖然它是撰寫和管理文章的通用工具, 但它符合Linked Research 的倡議, 併為學術交流提供社會特徵和互動。文章也可以在語義上進行註釋——從句子中的片段到描述 (例如, 假設、工作流、評估), 並有自己的 uri 來促進發現和重用。可以取消引用所有 uri, 並在 html 和 rdf 中使用其內容表示形式。

dokieli 使用作者、審閱者和評論員的 weid 和 pod 來儲存這些參與者建立的資訊, 並可以為他們分配不同的訪問控制。例如, 批註和社交通知 (如回覆、同行審閱、贊、重新共享) 可以駐留在貢獻者的 pod 中。

我們在 SoLiD 應用程式開發方面的經驗證實, solid 提供了一個功能豐富的平臺, 支援可移植性和互操作性。應用程式可以使用多個 pod 伺服器實現, 並且可以輕鬆地更改使用資料的應用程式, 而無需更改資料 (例如, 透過分叉和新增功能)。

在 SoLiD 應用程式中實現社交功能非常簡單, 需要一層薄薄的可重用程式碼。應用程式和 pod 透過利用 httpx1.1 方法相互互動, 這些方法起到了很大的作用。

在 SoLiD 應用中使用 sparql 也相對簡單。開發人員可以編寫 sparql 查詢來表示資料訪問功能, 如搜尋、篩選或獲取頂級結果。開發人員還可以編寫連結跟蹤 sparql 查詢, 以跟蹤 pod 之間的連結。

4. DEMONSTRATION PLAN/應用例項展示

表 2: SoLiD 應用。星號 (*) 表示我們未開發的第三方應用程式。

使用者將能夠與表 2 中顯示的所有應用程式進行互動, 並能夠將資料儲存在兩個不同的 pod 伺服器上: databox.me 、 meccano.io。本節提供了使用這些伺服器的特定應用方案。

演示方案涉及兩個使用者, alice 和 bob, 使用不同的 pod 伺服器。alice 將使用 databox.me 中的 gold 伺服器, bob 將使用 meccano.io 的 meccano 伺服器。我們將展示, 雖然這是兩個完全不同的伺服器, 但這兩個使用者可以使用相同的應用程式來訪問和維護他們的資料。這可以使用表 2 中的任何應用程式來顯示。應用程式將能夠在使用者的 pod 中建立、修改、刪除和檢索資源。演示參與者可以使用 warp 檔案瀏覽器檢視這些資源, 還可以檢視所涉及的客戶端-伺服器互動。

除了基本的 solid 功能外, 演示還將轉向互操作性和訪問控制。互操作性將透過 dokieli 應用程式進行演示, 該應用程式可在使用者之間實現社會互動, 並透過使用連結跟蹤查詢的應用程式進行演示。例如, 我們將演示 alice 如何在通訊錄應用程式中使用連結跟蹤查詢在 bob 的公共聯絡人中進行搜尋。除了演示互操作性外, 這些示例還將演示訪問控制。他們還將展示 solid 的其他特徵, 如授權, 以便允許一個 pod 代表其所有者發言。與以前一樣, 演示參與者可以檢視正在建立的資源, 觀察客戶端-伺服器互動, 以及伺服器到伺服器的互動。

另一種形式的互操作性是讓多個應用程式使用相同的資料。我們將顯示使用者可以使用兩個不同的通訊錄應用程式來管理同一組聯絡人。我們還將展示如何將 alice 的 pod 從 databox.me 遷移到 meccano. io, 從而展示 solid 提供的可移植性。遷移後, alice 需要更改其 web id 配置檔案以指向新儲存, 她的應用程式將被重定向到新的 pod。

5. 結論

社會網路的重新分散是一個重要的課題, 也是一個活躍的研究領域。solid 平臺是社交 web 應用程式分散平臺的具體例項, 它提供分散身份驗證、分散的資料管理、以庫和 Web 元件形式提供的開發人員支援, 以及一套執行伺服器和示例應用程式。本演示將展示 solid 平臺如何啟用社交應用程式, 同時允許每個使用者保留對其 pod 的控制。演示參與者將從使用者和應用程式開發人員的角度體驗 solid。他們將深入瞭解 solid 提供的互操作性和可移植性功能、它可以啟用的豐富社交功能以及這些功能背後的客戶端和伺服器機制。對這一平臺的具體認識在正在進行的關於重新權力下放的討論中非常有價值。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;