跳到主要内容

知识图谱:JSON-LD To N-Quads — Numio

使用 jsonld.toRDF 将 JSON-LD 转换为 N-Quads 格式的 RDF。每条语句占一行,包含主语、谓语、宾语(命名图还包含图名);没有 @id 的节点变为 _:b0 这样的空白节点。

将 JSON-LD 结构化数据载入可导入 N-Quads 的三元组存储或 RDF 库。

JSON-LD

N-Quads

适用场景

  • 将 JSON-LD 结构化数据载入可导入 N-Quads 的三元组存储或 RDF 库。
  • 准确查看搜索引擎或 RDF 工具会从你的 JSON-LD 中提取出哪些 RDF 三元组。

使用方法

  1. 将 JSON-LD 文档粘贴到 JSON-LD 编辑器。
  2. 查看 N-Quads 输出;@type 变为 rdf:type 三元组,嵌套对象变为相互链接的空白节点。
  3. 将这些行复制到 .nq 文件中。

JSON-LD

{
  "@context": {"@vocab": "http://schema.org/"},
  "@type": "Person",
  "name": "Jane Doe",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Seattle"
  }
}

N-Quads

_:b0 <http://schema.org/address> _:b1 .
_:b0 <http://schema.org/name> "Jane Doe" .
_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person> .
_:b1 <http://schema.org/addressLocality> "Seattle" .
_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/PostalAddress> .

功能与限制

空白节点标签(_:b0、_:b1)在转换过程中分配,不是规范化的;如需稳定的标签,请使用 normalized 页面。

三元组位于默认图中,因此每行没有第四个元素;命名图(带 @id 的 @graph)会加上图 IRI。

使用 jsonld.js 在浏览器中运行;https://schema.org/ 这样的远程 @context 由浏览器获取。下载失败时,页面会显示包含该 context URL 的错误。

FAQ

N-Quads 输出是有效的 N-Triples 吗?

像本例这样所有数据都在默认图中时,每一行也是有效的 N-Triples。命名图中的数据会多出 N-Triples 不允许的图名列。

普通字符串和数字如何写出?

字符串变为 "Jane Doe" 这样的普通字面量;JSON 中的整数、小数和布尔值变为带类型的字面量:"3"^^xsd:integer、"1.5E0"^^xsd:double 和 "true"^^xsd:boolean(以完整 IRI 写出)。

为什么有些键不见了?

只有通过 @context 展开为 IRI 的键才会产生三元组;未定义的术语会被丢弃。

规范与参考资料