#linked-data #facebook #solid #turtle #rdf

bin+lib 孵化器

将Facebook通过“下载您的信息”工具(https://127.0.0.1/settings)导出的社交媒体数据转换为SOLID(https://solid.mit.edu/)个人资料的Turtle三元组

1个不稳定版本

0.1.0 2019年11月2日

#1851解析器实现

MIT 协议

385KB
731

孵化器

通过将您的社交数据转换为Turtle三元组,跳出Facebook的壳

Dancing Hatchling

我是个Facebook的粉丝。他们创建了祖父母也能使用的社交网络,并且对开源生态系统做出了巨大贡献。然而,我更欣赏用户赋权和选择。

在今天的替代方案中,我认为蒂姆·伯纳斯-李(Tim Berners-Lee)对SOLID(基于链接数据原则的分散式社交网络)的愿景为数据所有权提供了最实用的发展前景。它为现有社交网络与标准机构合作、采用链接数据以及SOLID数据所有权模型提供了可能性。

然而,要实现这一点,技术先行者需要参与链接数据生态系统,并学习语义网的基本知识。

本项目旨在通过简化使用链接数据和Turtle表达个人资料的过程来鼓励SOLID的采用。它提供了一个二进制文件,该文件可以将Facebook的下载您的信息转换成SOLID使用的语义网三元组。

注意:如果您想了解更多理论,我建议您阅读SOLID网站上链接数据基础

步骤1:从Facebook下载您的数据

  1. 导航到Facebook的下载您的信息
  2. 在“格式”下,选择JSON
  3. 在“您的信息”中,您可以取消选择所有选项,然后仅选中“个人信息”。这是我们唯一需要的数据
  4. 等待Facebook完成批量导出过程。这可能需要一个小时左右。
  5. 将zip文件下载到合适的位置
  6. 解压缩zip文件,并将profile_information.json复制到方便的位置

步骤2:[可选]导出您的联系人

Facebook的下载您的信息宣传如下

您可以在任何时间下载您的Facebook信息副本。您可以下载完整副本,也可以仅选择您想要的信息类型和日期范围。您可以选择以易于查看的HTML格式接收您的信息,或者以JSON格式接收,这可以允许其他服务更容易地导入它。

这对于导出个人资料信息和Facebook为广告和跟踪目的而附加的所有元数据非常有用。通过下载您的个人数据,您可以更好地了解Facebook对您的数据,这有助于您做出关于您的隐私设置以及在Facebook上使用时的跟踪舒适度的明智决定。

然而,社交网络中最重要和有价值的数据通常不是您的个人资料信息,而是您的朋友关系,这定义了您在社会图谱中的作用。查看包含我大部分个人资料JSON的压缩文件时,此类数据明显缺失。

尽管Facebook允许您导出“朋友”数据,但这些数据仅显示友人的友好编码名称。从现实角度看,服务需要某种全局唯一标识符(GUID)才能在互联网上识别某人,对于Facebook来说,这可能是用户Facebook个人资料的公共URL。

"John Smith"是无用的,但 https://www.facebook.com/johnjohn.smith.12345 是。

为了解决这个问题,我们可以使用浏览器DevTools和一点JavaScript从我们的Facebook个人资料中抓取这些数据。

  1. 转到 https://127.0.0.1/bushidocodes/friends。由于性能原因,该页面会懒加载朋友,因此请滚动到朋友部分的底部,直到列出所有朋友。当您处于朋友部分的底部时,应该会看到一个页面断点显示“更多关于你”
  2. 打开您的浏览器DevTools到控制台(在Windows上的Chromium中为Ctrl+Shift+j)
  3. 审查以下JavaScript代码,以确信我没有做任何不正当的事情。该脚本基本上提取了您的朋友列表和他们的Facebook个人资料URL。
JSON.stringify([...document.querySelectorAll("[data-testid = 'friend_list_item']")].map(el => [...el.querySelectorAll("*")].filter(child => child.className === "fsl fwb fcb")[0].firstChild).map(el => ({name: el.textContent, target: `${el.getAttribute("href")}`.split("?")[0]})))
  1. 执行后,您应该看到结果JSON对象的第一部分。在底部(在Chromium中),您有一个复制按钮。点击复制此数据。 Image showing the copy button in devtools
  2. 使用代码编辑器将此数据粘贴到friends.json文件中,并将其保存到与profile_information.json相同的目录中。

第3步:下载并运行二进制文件

  1. 下载适用于相应平台和架构的二进制文件(目前仅支持x64 Linux和Windows)到与您的JSON文件相同的目录
  2. 启动命令提示符并导航到包含二进制和JSON文件的文件夹
  3. 如果您跳过了步骤2,请运行hatchling.exe profile_information.json out.ttl。否则,请运行hatchling.exe --friends friends.json profile_information.json out.ttl

第4步:验证和编辑输出文件

现在您已经生成了一个Turtle文件,您应该口头检查输出并手动删除受保护的数据。

完成后,您可以使用W3C验证器验证您的文件的正确语法 with the W3C validator

依赖关系

~2.5–4MB
~64K SLoC