Solid数据自有的去中心化语义网

2019-03-06 14:57 栏目:经验之谈 来源: 查看()
Solid是由万维网发明人Tim Berners-Lee爵士在麻省理工学院推出的令人兴奋的新项目。该项目旨在从根本上改变Web应用程序的集中化趋势,这将真正使数据所有权属于用户并改善隐私问题。

在SoLiD生态系统中,您可以自由选择数据的存在位置。这些数据包括但不限于您拍摄的照片,发布的评论,地址簿联系人或日历上的活动。它们存储在SoLiD Pod中,可以是您的家,您的公司,甚至是其他在线POD提供商。由于您拥有数据,因此您可以随时随地移动数据,而不受服务提供商的干扰。

您必须先授权第三方应用程序,然后才能读取和写入您的POD。因此,当您注册新应用时,您无需重新填写您的个​​人信息,因为这些信息可以直接从SoLiD Pod中读取。存储在A应用程序中的数据也可以在B应用程序中访问,您不必手动同步,因为您的数据将始终跟随您。

这些措施不仅可以保护您的隐私,还可以为开发人员带来很大的好处。因为它们可以拥有大量数据,所以它们可以避免冷启动过程。

Solid数据自有的去中心化语义网

您的POD等同于您的个人网络磁盘

您可以在SoLiD中存储任何内容。 POD就像基于网络的USB,可以随时访问。当您授予其他人访问您的数据的权限时,他们可以与您的照片和文章进行互动。您可以控制哪些应用以及哪些人可以查看您的数据。

将POD视为您的私人网站,但数据可以与您信任的应用程序进行交互,这意味着您可以为您的数据提供完全可控的API。当您对网络上的视频发表评论时,您的朋友可以在任何应用中看到此评论,例如照片查看器或社交应用流。这些是您的数据,可以以任何形式显示。

您可以拥有无​​限制的POD,只要他们有SoLiD服务器就可以访问它们。

Solid数据自有的去中心化语义网

您的POD等同于您在互联网上的身份

为了证明您拥有自己的数据,您需要拥有一个身份。在SoLiD中,Pod是一种证明你是谁的工具(不依赖于任何第三方公司)。因此,将来“使用WeChat登录”和“使用微博登录”将成为“使用SoLiD Pod登录”。

Solid数据自有的去中心化语义网

SoLiD具体技术细节

Solid是社交Web应用程序的分散平台。在可靠平台中,用户数据的管理独立于创建和使用此数据的应用程序。每个用户将他们的数据存储在Web可访问的个人在线数据存储(或pod)中。每个用户可以拥有来自不同pod提供商的一个或多个pod,并且可以轻松地在提供商之间切换。应用程序使用定义良好的协议来访问用户pod中的数据,分散式身份验证和访问控制机制可确保数据隐私。在这种分散式架构中,应用程序可以在存储用户数据的任何地方运行。用户可以控制对其数据的访问,并可以随时在应用程序之间切换。我们将从最终用户和应用程序开发人员的角度展示solid的实用性及其实现方式。为此,我们将使用一组可靠的服务器和使用这些服务器的多个Web应用程序。我们相信使用像solid这样的特定平台的经验对于真正理解分散的社交网络的力量非常有价值。

1.介绍和背景

社交网络应用程序,例如Facebook,Twitter,Doodle,Wikipedia,Craigslist,其中大多数将数据存储在可被视为“数据岛”的集中存储库中。每个应用程序(或基于社交网络平台的一组应用程序)控制其自己的数据,并且通常具有其自己的认证和访问控制机制。因此,用户无法在允许重复使用其数据的类似应用程序之间轻松切换,也无法从一种数据存储服务切换到另一种数据存储服务。开发人员仅限于特定平台提供的数据访问API,开发可在多个平台上运行的应用程序并不容易。这些和其他集中化问题已经被认识很长一段时间,并且有很多关于“重新分散”社交网络的建议,Diaspora,Musubi和WebBox等等。但这些建议都没有被广泛采用。

Solid数据自有的去中心化语义网

图:SoLiD平台。用户将其数据存储在驻留在Pod服务器上的个人在线数据存储(pod)中。用户使用存储在其pod中的RDFprole文档来控制其身份。要使用SoLiD应用程序,用户从应用程序提供程序加载应用程序。用户从应用程序提供者加载应用程序。应用程序从用户的身份信息中获取用户的pod。然后,它会跟踪身份信息的链接,以发现用户窗格和其他窗格上的数据,并在需要时执行身份验证。

分散式平台的技术细节仍然是研究人员和从业人员研究的主题。例如,w3c允许社交网络工作组积极调查权力下放标准。

我们目前在这个领域的活动围绕着一个平台,我们称之为实体(社会关联数据)[7]。坚实的平台支持分散的社交Web应用程序,依靠w3c标准和语义Web技术来实现图1所示的体系结构。该平台指定了图中所需的所有协议,例如身份验证,应用程序到服务器和服务器 - 到服务器通信。此演示展示了可靠的平台,该平台专注于最终用户和应用程序开发人员体验。特别是,我们通过支持这些应用程序的一组应用程序和服务器进行演示,这些应用程序和服务器支持应用程序之间的高度互操作性,应用程序之间的数据和社交图表的轻松共享以及服性别。

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数据自有的去中心化语义网

solid中的应用程序数据存储在用户的pod中,pod存储在pod服务器上。按照关联数据平台(ldp)建议的定义,以宁静的方式管理数据。 Ldp使应用程序能够在分层容器中管理数据项(也称为集合或目录)。每个数据项和容器都有一个uri,ldp定义了通过uri上的http请求操作数据项和容器的协议;例如,psts/put要创建,put/patch要更新,并且可以检索。项目可以通过他们的uri或通过下面其他项目的链接找到。 Solid区分由rdf表示的结构化数据,可用于任何类型的非结构化数据(如视频,图像,网页)。这允许以各种格式分析和序列化结构化数据,例如Turtle或JSON-LD。

除ldp支持外,pod服务器还提供可选的sparql支持。支持sparql的服务器允许应用程序表示复杂的数据检索操作,包括通过链接跟踪sparql进行的服务器到服务器通信。这简化了SoLiD应用程序开发,因为它使开发人员能够将复杂的多po数据检索操作委派给服务器。

solid中的pod服务器与应用程序无关,因此您无需修改​​服务器即可开发新应用程序。例如,即使ldp 1.0不包含特定于“社交”的内容,许多w3c社交网络工作组用户方案也可以使用ldp和应用程序逻辑以实体方式实现,而无需对服务器进行任何更改。

pod服务器的要求如图2所示.bod服务器需要存储rdf和非rdf资源,并且需要支持对这些资源的基本ldp访问,补丁资源,访问控制列表(ACL),实时更新和(可选的sparql)。有几种方法可以在pod服务器中实现rdf数据的基本存储,例如,使用文件系统,键值存储,关系数据库系统或图形数据库系统(即三重/四重存储)。

我们已经实现了几个原型服务器,如表1所示。我们的ldphp,gold和ldnode服务器将所有数据存储在文件系统中。在这种情况下,rdf和非rdf资源都存储为文件,包括表示acl的rdf资源和与非rdf资源相对应的元数据文档(所有这些都由ldp定义)。我们的meccano服务器将rdf数据存储在图形数据库系统中(目前我们使用jena)并将非rdf数据存储在文件系统中。 Meccano通过sparql查询实现所有可靠操作,并且还使用链接跟踪sparql进行复杂数据检索。使用rdf数据库简化了对大型数据集的查询,高效的数据检索(即图形的子集)和补丁操作。

3. SoLiD开发技术的发展

在本节中,我们将以实体形式讨论应用程序开发,并举例说明我们已实现的SoLiD应用程序。目标是展示固体基本结构的灵活性和权力下放的好处。

SoLiD技术的发展依赖于可靠的库和组件的支持。

例如,我们开发的所有应用程序都使用rdflib.js库(来自制表符 的核心库)来处理rdf资源。另一个库是solid.js,它通过抽象一些更复杂的操作简化了SoLiD应用程序的开发。我们还提供用于身份验证和注册的模块,这些模块旨在作为Web组件重用。我们正在不断扩展固体生态系统中的库和组件集,我们希望这会显着加速固体的采用。

我们为常见的日常任务开发了几个SoLiD应用程序,如表2所示。其中一些应用程序使用angularjs和jquery框架,这些框架为应用程序交互提供了一组经过验证的功能。在此演示中,所有应用程序都是作为响应式Web应用程序开发的,并在firefox和chrome中进行了测试联系人和dokieli应用程序的屏幕截图如图3和图4所示。接下来我们将介绍这两个应用程序。

* vCards是一套电子名片

Contacts应用程序管理存储在用户pod上的联系人列表。实体中,用户的社交图包括存储在其pod上的联系人,这些联系人的联系人等等,每个联系人都由webid标识。因此,联系人可以被视为管理用户的分布式社交图的界面。 Contacts应用程序使用vCards本体技术为用户的联系人维护一组vCard。每个vcard都是一个具有唯一uri的资源,除了名称和电子邮件等其他字段外,还可以包含其所代表的用户的Web ID。用户可以将vcards标记为公共或允许个人或一组人访问vcards(由webid标识)。

我们的联系人应用程序中由solid实现的一个有趣的社交功能是使用链接跟踪sparql搜索“联系人中的联系人”的功能。用户可以在其pod中搜索符合搜索条件(如姓名,电子邮件或地址)的vcards。此外,“联系人”应用程序可以使用链接跟踪sparql查询来搜索可从用户vCards中的webid访问的pod上的公共联系人(通过以下链接)。用户获得与搜索条件匹配的vCard列表,并且每个回答vCards的uri表示名片的来源。此搜索功能提供了一个由分散的社交平台(如solid)支持的创新社交功能的示例。

Solid数据自有的去中心化语义网

图3:联系人应用程序使用ldp维护一组vCard,并使用链接跟踪sparql搜索用户pod中的vCards和从这些vCard中的webids到达的vCard。

Solid数据自有的去中心化语义网

图4: dokieli是一种通用的创作和交互工具。

Dokieli是一个分散的文章创作,注释和社交通知应用程序。虽然它是一种用于撰写和管理文章的多功能工具,但它与Linked Research的倡议一致,并为学术交流提供社交功能和互动。文章也可以从句子中的片段到描述(例如,假设,工作流程,评估)在语义上注释——,并且具有它们自己的uri以便于发现和重用。您可以取消引用所有uris并在html和rdf中使用它们的内容表示。

Dokieli使用作者,审阅者和评论员的weids和pod来存储这些参与者创建的信息,并为他们分配不同的访问控制。例如,注释和社交通知(例如回复,同行评审,喜欢,重新分享)可以驻留在贡献者的窗格中。

我们在SoLiD应用程序开发方面的经验证实,solid提供了一个功能丰富的平台,支持可移植性和互操作性。可以使用多个pod服务器实现应用程序,并且可以在不更改数据的情况下轻松更改使用数据的应用程序(例如,通过分叉和添加功能)。

在SoLiD应用程序中实现社交功能非常简单,需要一层薄薄的可重用代码。应用程序和pod通过使用httpx1.1方法相互交互而极大地相互作用。

在SoLiD应用程序中使用sparql也相对简单。开发人员可以编写sparql查询来表示数据访问功能,例如搜索,过滤或获取顶级结果。开发人员还可以编写链接跟踪sparql查询来跟踪pod之间的链接。

4.示范计划/应用实例显示

表2: SoLiD应用程序。星号(*)表示我们尚未开发的第三方应用程序。

Solid数据自有的去中心化语义网

用户将能够与表2中显示的所有应用程序进行交互,并能够将数据存储在两个不同的pod服务器: databox.me,meccano.io上。本节提供使用这些服务器的特定应用程序方案。

演示场景涉及两个用户,alice和bob,使用不同的pod服务器。 Alice将使用databox.me中的gold服务器,bob将使用meccano.io的meccano服务器。我们将展示虽然这是两个完全不同的服务器,但两个用户都可以使用相同的应用程序来访问和维护他们的数据。这可以使用表2中的任何应用程序显示。应用程序将能够在用户的pod中创建,修改,删除和检索资源。演示参与者可以使用warp文件浏览器查看这些资源,并查看所涉及的客户端 - 服务器交互。

除了基本的实体功能外,该演示还将转向互操作性和访问控制。互操作性将通过dokieli应用程序进行演示,该应用程序支持用户之间的社交互动,并通过使用链接跟踪查询的应用程序进行演示。例如,我们将演示alice如何使用“联系人”应用中的链接跟踪查询在bob的公共联系人中进行搜索。除了演示互操作性之外,这些示例还将演示访问控制。他们还将展示固体的其他功能,例如授权,以允许pod代表其所有者发言。和以前一样,演示参与者可以查看正在创建的资源,观察客户端 - 服务器交互以及服务器到服务器的交互。

另一种形式的互操作性是让多个应用程序使用相同的数据。我们将展示用户可以使用两个不同的联系人应用程序管理同一组联系人。我们还将向您展示如何将alice的pod从databox.me迁移到meccano.io,以显示solid提供的可移植性。迁移后,alice需要更改其Web ID配置文件以指向新商店,她的应用程序将重定向到新的pod。

5.结论

社交网络的重新分配是一个重要的主题和活跃的研究领域。可靠的平台是社交Web应用程序分散式平台的具体示例,它提供分散式身份验证,分散式数据管理,以库和Web组件形式的开发人员支持,以及一组运行时服务器和示例应用程序。此演示将展示实体平台如何支持社交应用程序,同时允许每个用户保持对其pod的控制。演示参与者将从用户和应用程序开发人员的角度体验到实力。他们将深入了解solid提供的互操作性和可移植性功能,它可以实现的丰富社交功能,以及这些功能背后的客户端和服务器机制。在正在进行的关于重新分权的讨论中,对该平台的具体理解非常有价值。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发