Json-LD>定义一个" person"便于重用为WebPage架构

时间:2015-08-24 08:34:26

标签: 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>

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

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

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

我知道@context可以针对文档(这里是一个网页)进行扩展,以定义“事物”。除了宣布相关的语言之外作为schema.or,json-ld似乎也支持使用&#39; IRI&#39;来支持引用特定项目。作为身份证。

因此,似乎我可以根据需要定义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似乎是最后添加了#value的网址。 #value只是一个声明来区分它与页面URL(对于其他一些键可能是一个值),或者是#value引用页面上的div,例如id =&#34的div ;值&#34;或者其他一些协议?

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

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

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

    谢谢。

1 个答案:

答案 0 :(得分:9)

你的榜样几乎是正确的。您需要将SELECT Min(t1.ShortName), Min(t0.cardname), Str(Sum(t1.debit), 15, 2), Str(Sum(t1.Credit), 13, 2), Str(Isnull(Sum(T1.DEBIT) - Abs(Sum(T1.CREDIT)), 0), 13, 2)[FINAL] into #temp FROM JDT1 t1 INNER JOIN OCRD t0 ON t1.ShortName = t0.CardCode WHERE t0.CardType = 'S' AND Year(t1.taxDate) = Year(@Fecha) GROUP BY t1.ShortName, t0.CardName ORDER BY t1.ShortName SELECT * FROM #temp where FINAL <> '0' 分配给您在其他地方重用的person对象:

@id