Json-LD > 定义一个 "person" 以便于重用为网页模式不同键的值

Json-LD > Define a "person" for easy reuse as values on different keys for WebPage schema

我正在尝试在我的网站上使用 json-ld,使用 schema.org 作为语言。

原因是为了协助搜索引擎的爬虫了解我的网站。

Schema.org 为项目类型提供了许多 key/value 属性对。

有时,这些键的值本身就是一个项目,具有自己的类型,并且有自己的一组 key/value 对。

在实践中,同一个项目是几个不同键的适当答案,并且desirous/necessary给出那个项目的key/value集。

例如,在我的例子中,我正在使用 schema.org 的 "WebPage" 类型标记网站上的网页。

我想给同一个人作为网页类型上各种键的答案:作者、创建者、版权所有者等

我想我可以这样做,每次都重复这些值,例如:

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type" : "WebPage",
    "name" : "The Name of the Webpage",
    "author" : 
        {
        "@type" : "Person",
        "name" : "Tim"
        }
    "creator": 
        {
        "@type" : "Person",
        "name" : "Tim"
        }
    "copyrightHolder" :
        {
        "@type" : "Person"
        "name" : "Tim",
        }
}
</script>

但是,这对我来说是重复和冗长的。

我宁愿assign/define这个人一次,然后根据需要使用关键字引用他(我)。

我对 json-ld 或 coding/programming 了解不多,作为外行我发现信息(spec + jsonld.org + 这里)有点混乱.

我知道除了将相关的 'language' 声明为 schema.or 之外,还可以为文档(此处为网页)扩展 @context 以定义 'things',并且 json-ld 似乎也支持使用 'IRIs' 作为 ID 引用特定项目。

所以我似乎可以根据需要使用类似于以下内容的方式定义 Person:

<script type="application/ld+json">
{
    "@context": 
        ["http://schema.org",
            {
              "Tim" : 
                {
                "@type" : "Person",
                "@id" : "https://www.example.com/tim#tim"
                "name" : "Tim"
                }
            }],
    "@type" : "WebPage",
    "name" : "The Name of the Webpage",
    "author" : "Tim",
    "creator": "Tim"
}
</script>

所以我的问题是:

  1. 我们可以这样做吗?如果可以,怎么做?

  2. 在许多文档中,IRI 似乎是 URLs,最后添加了#value。 #value 只是一个声明,以将其与页面 URL 区分开来(对于其他一些键,它可能是自身的值),还是 #value 引用页面上的 div,例如div 带有 id="value" 或其他协议?

  3. 如果我这样做,会说 Google 的爬虫只是缓存 IRI 以便稍后引用关联的 URL 或 div,或者它会可能分配定义的值?理想情况下,我希望每次使用都返回扩展值。

我在这个站点上查找了很多这些问题的答案。我看过类似的问题和答案,它们可能已经回答了这些问题,但以我无法理解的方式。例如,我不知道 "node" 或 "object" 是什么。

请原谅我的知识匮乏。任何使用简单明了的语言都将不胜感激。实际上,我们将不胜感激!

谢谢。

你的例子几乎是正确的。您需要将 @id 分配给您在别处重用的人员对象:

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type" : "WebPage",
    "name" : "The Name of the Webpage",
    "author" : {
      "@type" : "Person",
      "@id": "#tim",
      "name" : "Tim"
    },
    "creator": {
      "@id": "#tim"
    },
    "copyrightHolder": {
      "@id": "#tim"
    }
}
</script>