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>
所以我的问题是:
我们可以这样做吗?如果可以,怎么做?
在许多文档中,IRI 似乎是 URLs,最后添加了#value。 #value 只是一个声明,以将其与页面 URL 区分开来(对于其他一些键,它可能是自身的值),还是 #value 引用页面上的 div,例如div 带有 id="value" 或其他协议?
如果我这样做,会说 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>
我正在尝试在我的网站上使用 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>
所以我的问题是:
我们可以这样做吗?如果可以,怎么做?
在许多文档中,IRI 似乎是 URLs,最后添加了#value。 #value 只是一个声明,以将其与页面 URL 区分开来(对于其他一些键,它可能是自身的值),还是 #value 引用页面上的 div,例如div 带有 id="value" 或其他协议?
如果我这样做,会说 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>