JSON-LD中的@id是否需要全局唯一?

问题描述 投票:0回答:2

问题

JSON-LD 的提供者是否有必要确保节点的

@id
始终是全局唯一的,或者只需要
@id
在 JSON-LD 文档中是唯一的?

例子

假设我们在不同的网站上有两篇不同的文章,它们都在 CC-BY-SA 4.0 下获得许可。他们使用 https://schema.org/ 和 JSON-LD 来描述他们的元数据。一篇文章使用 URI

http://creativecommons.org/licenses/by-sa/4.0/
,另一篇
https://creativecommons.org/licenses/by-sa/4.0/deed.en
作为属性
@id
license

A篇的JSON-LD

{
  "@context": "https://schema.org/",
  "@type": "Article",
  "name": "A"
  "url": "https://a.com/article",
  "license": {
    "@id": "http://creativecommons.org/licenses/by-sa/4.0/"
  }
}

B篇的JSON-LD

{
  "@context": "https://schema.org/",
  "@type": "Article",
  "name": "B"
  "url": "https://b.com/article",
  "license": {
    "@id": "https://creativecommons.org/licenses/by-sa/4.0/deed.en"
  }
}

在上面的示例中,当我使用 schema.org 验证器检查两个许可证 URI 我得到

{
  "@id": "https://creativecommons.org/licenses/by-sa/4.0/deed.id"
}

两篇文章的许可属性是指相同的还是不同的 JSON-LD 节点?将不同的 URI 解析为全球唯一标识符是消费者还是元数据提供者的工作https://creativecommons.org/licenses/by-sa/4.0/deed.id?

(我可以假设提供者和消费者尝试将不同的 URI 解析为全球唯一的 URI 是一种很好的做法。但是我很想知道规范对上述示例的看法。)

rdf json-ld
2个回答
0
投票

我的理解是,id 不一定是有效的 URL,而是一种识别特定实体的方式。使用定义实体的 URL 只是一种常见的做法,如果该 URL 上有多个实体,则可能会添加一个哈希值。

我想说这两篇文章都应该参考https://creativecommons.org/licenses/by-sa/4.0/deed.id因为这是许可证标识自己的ID。


0
投票

两篇文章的许可属性是指相同的还是不同的 JSON-LD 节点?

他们指的是不同的节点。

Schema.org 的验证器在这两个页面上都将

https://creativecommons.org/licenses/by-sa/4.0/deed.id
显示为顶级项目这一事实可能令人困惑,但它没有相关性。这是印尼语版本的许可证(它有语言代码
id
,所以它与“标识符”无关),恰好是HTML中列出的第一个。

提取的RDF正确地说这个印尼语版本是

frbr:translationOf
的翻译(
http://creativecommons.org/licenses/by-sa/4.0/
)。

消费者或元数据提供者的工作是将不同的 URI 解析为全球唯一标识符 […]?

准确指定正确/预期的 IRI 必须是数据提供者的工作。毕竟只有他们自己知道自己想传达什么

这些 IRI 根本不必是可解析的。这是一个很好的做法,但不是必需的,也不总是可行的(例如,当使用像

urn
tel
tag
等 URI 方案时)。并且 RDF 的消费者永远不需要尝试解析这些 IRI。

© www.soinside.com 2019 - 2024. All rights reserved.