BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

JSON-LD进入W3C推荐状态

| 作者 Steve Klabnik 关注 0 他的粉丝 ,译者 臧秀涛 关注 2 他的粉丝 发布于 2014年2月9日. 估计阅读时间: 7 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT