我正在努力为我的网站正确定义JSON-LD。我不确定的一点是如何引用以前定义的JSON-LD项目,而不必复制和粘贴它们。
我知道可以为每个项目赋予@id
属性,但是我应该如何正确利用它(如果可以的话)?
例如,假设我创建了一个Organization
为@id
的{{1}}项目。
当我需要再次引用该项目时,只需再次指定https://example.com/#Organization
就正确了吗?
即使在我引用的页面上未定义该项目的情况下,我也能做到这一点是正确的吗?
对于@id
项目类型,我的理解是您应该只在主页而不是每个页面上声明它,所以如果用户当前在产品页面上,并且我想引用组织,它尚未在我所在的页面上定义,但已在其他地方声明。
答案 0 :(得分:1)
您是正确的,在不同的地方使用相同的@id
可以使您对同一件事进行陈述。实际上,作为Flattening一部分的JSON-LD Framing算法将这些全部整合到一个节点对象中。
JSON-LD是链接数据的一种格式,可以合理地说,可以将在不同位置(页面)上针对同一资源所作的语句合并在一起,如果您从多个位置的信息组成知识图,这实际上是您在做什么。知识图通常会将JSON-LD(或其他等效的语法表示形式)简化为RDF Triples /四元组,其中每个“页面”有效地定义了一个图,可以将其组合以创建更大的Dataset。然后,您可以用不同的方式查询数据集以检索该信息,这可能导致合并单独的语句。
但是,大多数应用程序可能会在单个位置中查找资源的完整定义。但是对于像组织这样的事物,您可以想象可能会产生不同的Employee资源,其中存在诸如:Employee :worksFor :Organization
之类的关系,因此组织的页面不会期望也列出该组织中的每个雇员,但是通过合并所有这些单独的资源制成的更全面的知识图可以用于重构它。