Json-LD>定义一个"person",以便在WebPage模式的不同键上轻松重用

TBB*_*TBB 3 json-ld

我正在尝试使用schema.org作为lanquage在我的网站上使用json-ld.

原因是协助搜索引擎的抓取工具了解我的网站.

Schema.org为Items of Items提供了许多键/值属性对.

有时,这些键的值本身就是具有自己的Type的Item,并且具有自己的一组键/值对.

在实践中,相同的项目是几个不同键的适当答案,并且希望给出该项目的键/值集是必要的/必要的.

例如,在我的情况下,我正在使用schema.org的"WebPage"类型在网站上标记网页.

我想给出与WebPage类型上的各种键的答案相同的人:author,creator,copyrightHolder等.

我想我每次都可以用以下的方式重复这些值:

<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>
Run Code Online (Sandbox Code Playgroud)

然而,这对我来说是重复和冗长的.

我宁愿分配/定义一次这个人,然后根据需要使用关键字引用他(我).

我不太了解json-ld或编码/编程,作为一个外行人,我发现信息(spec + jsonld.org + here)有点令人困惑.

据我所知,除了将相关的"语言"声明为schema.or之外,还可以为文档(此处为网页)扩展@context以定义"事物",并且json-ld似乎也支持使用'引用特定项目' IRI'作为身份证.

因此,似乎我可以根据需要定义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>
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

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

  2. 在很多文档中,IRI似乎是最后加上#value的URL.#value只是一个声明来区分它与页面URL(对于其他一些键可能是一个值),或者是#value引用页面上的div,例如id ="value"的div或者其他一些协议?

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

我在这个网站上看了很多,以获得这些问题的答案.我见过类似的问题和答案,可能已经回答了这些问题但是我无法理解.例如,我不知道"节点"或"对象"是什么.

请原谅我缺乏知识.任何使用简单的简单语言将不胜感激.实际上,任何帮助将不胜感激!

谢谢.

Mar*_*ler 9

你的榜样几乎是对的.您需要为@id在其他地方重用的person对象分配一个:

<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>
Run Code Online (Sandbox Code Playgroud)