50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

JSON-LD 进入 W3C 推荐状态

  • 2014-02-08
  • 本文字数:1711 字

    阅读完需:约 6 分钟

W3C RDF 工作组已将 JSON-LD 和 JSON-LD 1.0 处理算法与 API 标准推进到推荐状态。JSON-LD 是一个标准,旨在向 JSON 中加入“链接数据(linked data)”语义。JSON-LD 文档看上去是像下面这样:

复制代码
{
"@context": "http://json-ld.org/contexts/person.jsonld",
"name": "Manu Sporny",
"homepage": "http://manu.sporny.org/",
"image": "http://manu.sporny.org/images/manu.png"
}

如果还不熟悉 W3C 的标准化流程,可以先了解一下:一个规范可以处于三个成熟层次之中。推荐(Recommendation)状态是特定规范的最后一步。W3C 的建议是,推荐状态可以“广泛实现”,也就是说,相应规范已经为广泛的公开使用做好准备,而且足够稳定。

人们投入了很多工作才使 JSON-LD 进入这一状态:在 4 年多的时间里,有着 100 次电话会议,281 份议题纪要,2 000 次代码提交,以及 2 500 封电子邮件。

进一步了解 JSON-LD

下面是一个直接选自规范的例子:

复制代码
{
"name": "Manu Sporny",
"homepage": "http://manu.sporny.org/",
"image": "http://manu.sporny.org/images/manu.png"
}

这个 JSON 文档表示一个人。人们很容易推断这里的语义:“name”是人的名字,“homepage”是其主页,“image”是其某种照片。然而机器不理解“name”和“image”这样的术语。

为解决该问题,我们可以使用链接数据。下面使用 JSON-LD 表示上面的例子:

复制代码
{
"http://schema.org/name": "Manu Sporny",
"http://schema.org/url": { "@id": "http://manu.sporny.org/" },
"http://schema.org/image": { "@id": "http://manu.sporny.org/images/manu.png" }
}

通过链接到 schema.org 上的定义,我们可以教给机器如何理解“name”、“url”和“image”的语义。不过有点复杂了。通过 JSON-LD 所谓的“上下文(context)”,我们可以兼顾第一个例子的简洁性和第二个例子的语义理解。基于第一个例子,我们引入一个 context:

复制代码
{
"@context": "http://json-ld.org/contexts/person.jsonld",
"name": "Manu Sporny",
"homepage": "http://manu.sporny.org/",
"image": "http://manu.sporny.org/images/manu.png"
}

我们现在链接到了 json-ld.org 上的一个 context。context 文档看上去像下面这样:

复制代码
{
"@context":
{
"name": "http://schema.org/name",
"image": {
"@id": "http://schema.org/image"
"@type": "@id"
},
"homepage": {
"@id": "http://schema.org/url",
"@type": "@id"
}
}
}

这种方法的另一个优点是,多个文档可以使用同一个 context。

为什么没有选择 RDF

JSON-LD 呈现出语义 Web 技术的风格,但是两者并不完全一样。它们有着类似的目标:围绕某类知识提供共享的上下文。例如,每个网站不应该围绕“name”重复发明概念。假设我们想研究几个不同的服务,以比较人们识别自身的方式。为了得到人们的名字,我们不得不针对每种 API 重新编写不同的代码,以确定如何取得其名字。

利用语义 Web 技术,每个服务都会暴露出“这是一个人( Person )”这一语义,我们只需要编写一次代码,理解人是什么。而且可以跨多种服务复用代码。

尽管 JSON-LD 和更为传统的语义 Web 技术(如 RDF)有着同样的最终目标,但是二者没有使用同样的构建块,JSON-LD W3C 社区组的主席 Manu Sporny 就两者之间的关系写了一篇博客

这就是我实现 JSON-LD 时没有选择大部分语义 Web 技术栈(TURTLE/SPARQL/Quad Stores),而选择从头做起的原因。这一策略并不适合所有人,但却是唯一适合我们的,而且是我们所能想到的唯一能让更传统的语义 Web 技术从骄傲自满中醒悟过来的方式。

Manu 还就规范简洁、清晰的文风做了详细说明:

我们尽最大努力剔除 JSON-LD 规范中复杂的技术行话。而且我特别注意在 JSON-LD 1.0 规范中完全不提 RDF,因为读者不需要为了理解 JSON-LD 文档转而去读 RDF 相关资料。在这一点上我们推回了很多次,我后面还会讲,但是问题在于我们想以相对于典型的 Internet 和 Web 规范更具谈话风格的方式传达信息,因为在规范中太早进入学究式风格会定下错误的基调。

这两点都表明, JSON-LD 尝试将语义 Web 技术相关的探讨向如下方向推进:简单、不复杂以及面向一般开发人员。

查看英文原文: JSON-LD Reaches W3C Recommendation Status

2014-02-08 01:335286
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 149.6 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

docker安装mysql5.7并挂载目录到本地

桥哥技术之路

Docker

C语言程序的基本结构

C语言技术网-码农有道

C/C++

听保洁老大爷讲Java的垃圾回收

侯树成

JVM

从全国首起暗网案件告破说起——暗网,超乎你想象

石君

网络安全 暗网 洋葱网络

ELK 日志收集简易教程

meng

elasticsearch Logstash Kibana ELK Filebeat

游戏开发通用技术和工具

波波

编程 游戏开发 H5游戏

5G来临,我们该如何打造自己的家庭数据中心基础篇

ABC实验室

5G 数字资产 家庭数据中心

我的工作原则与思考

梁帅

互联网 工作效率 原则

嵌套文件夹复制实现

Howe

Java 文件复制

分析Kubernetes技术体系的层级,慎用比较前沿的技术

韩超

VSCode最强助攻

页面仔小杨

编程 vscode

快来体验 JetBrains Space EAP 版本

刘培培

DevOps JetBrains Space

给程序员的错误找个台阶

曲水流觞TechRill

高仿瑞幸小程序 03 创建轮播图

曾伟@喵先森

小程序 微信小程序 大前端 移动

C语言数据类型

C语言技术网-码农有道

最新Idea 2020.1 二种方法激活教程

公众号:V5codings

intellij-idea

自助设备系列——上下游

孙苏勇

产品 行业资讯 智能设备

面对压力的战略和战术

山楂大卷

管理 精神力 逻辑思维 压力 工作思路

NumPy 运算规则总结

张利东

Python

2020年程序猿必读10本好书推荐

ABC实验室

学习 2020 程序员 好书推荐

freecplus框架,Linux平台下C/C++程序员提高开发效率的利器

C语言技术网-码农有道

Flutter Andorid真机或打包APK杂症记录

北风烈

flutter 打包APK

告别手写,一键生成 Helm Chart README

郭旭东

Kubernetes Helm

Grafana+Prometheus(InfluxDB)+Jmeter使用Nginx代理搭建可视化性能测试监控平台

软测小生

Grafana Prometheus Influxdb Jmeter 性能测试

有没有什么上古的程序代码至今依然没被更替?

极客时间

编程 程序员 开发

当我们说文本编辑器时,到底在说什么

付济

写作平台 InfoQ markdown

Kafka系列第5篇:一文读懂消费者背后的那点"猫腻"

z小赵

大数据 kafak 实时计算

使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (二)为什么要写单元测试

编程道与术

编程 编程语言 TDD 代码审查 单元测试

我在极客时间学习的三个月

石乐

我的编程之路-2(首秀)

顿晓

方法 沟通 新项目

打造个人商业模式第一步

一尘观世界

副业赚钱 提升认知 思维方式 商业模式 认识自己

JSON-LD进入W3C推荐状态_语言 & 开发_Steve Klabnik_InfoQ精选文章