我真的很困惑json-ld语法中使用的@id是什么。来自apple.com的示例。 @id实际代表什么。任何帮助都会很棒吗?

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@id": "http://www.apple.com/#organization",
    "@type": "Organization",
    "url": "http://www.apple.com/",
    "logo": "https://www.apple.com/ac/structured-data/images/knowledge_graph_logo.png?201608191052",
    "contactPoint": [
        {
            "@type": "ContactPoint",
            "telephone": "+1-800-692-7753",
            "contactType": "sales",
            "areaServed": [ "US" ]
        }
    ],
    "sameAs": [
        "http://www.wikidata.org/entity/Q312",
        "https://www.youtube.com/user/Apple",
        "https://www.linkedin.com/company/apple"
    ]
}




#1 楼

使用@id关键字可以为节点提供URI。此URI标识节点。

请参阅JSON-LD规范中的节点标识符。

(Microdata中的等效项是itemid属性,而RDFa Lite中的等效项是resource属性。)

为什么标识符有用?


您可以引用节点而不是重复该节点(请参见我的示例)。
其他作者可以(在外部站点上)做同样的事情:当他们使用您指定的URI时,很明显他们在谈论同一件事。
消费者可以了解到不同的节点在谈论同一件事。

它也是链接数据和语义网的核心概念之一。如果您对此有所关注,则可能需要使用区分实际事物和有关事物的页面的URI(请参阅我的解释)。

这是Apple在示例中所做的。 URI http://www.apple.com/#organization代表实际的组织,而不是有关该组织的页面(并且不是该页面的一部分)。这是一个哈希网址,是区分事物和事物页面的一种流行方法。如果您想在JSON-LD中说您喜欢Apple,则可以使用http://www.apple.com/#organization来识别Apple。如果您改用http://www.apple.com/,则它将是您喜欢的Apple主页。

评论


试图理解您的最后一段,所以页面应该具有相同的'@id'和'url'值?我当时在想,如果我们提供“ url”,那么我们就可以拥有基于哈希的ID。这有助于使情况保持一致。

– Ethan Collins
19年5月5日在22:16

@EthanCollins:最好同时提供(@id和url),是的。对于页面,它们通常具有与值相同的URI;对于其他项目,它们通常将具有不同的URI作为值(事物的@id,有关事物的页面的url)。 -为了确保我们在同一页面上:使用基于哈希的ID,是指在链接数据的上下文中的哈希URL,而不是在单页应用程序/基于JavaScript的网站的上下文中,对吗?

–未成年
19年6月6日在14:11

感谢您的澄清。我还要看看您在答案中分享的其他有用链接,现在更加清楚了。 (回答您的最后一个查询,是的,我想表示哈希URI)。

– Ethan Collins
19年6月6日在16:57

#2 楼

从Google Developers-数据类型-Local Business中的本地业务属性部分中读取以下链接,您可以:


[...] ID应该是稳定的,并且会随着时间的推移而不变。 Google搜索将网址视为不透明的字符串,并且不一定是有效链接。如果公司有多个地点,请确保每个地点的@id都是唯一的。


@id适用于几乎所有对象

我希望我的回答帮助您:)