json-ld语法中@id的用途是什么?


16

我真的很困惑@idjson-ld语法中使用的是什么。来自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"
    ]
}

Answers:


27

@id关键字允许你给一个节点的URI。此URI标识节点。

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

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

为什么标识符有用?

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

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

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


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

1
@EthanCollins:提供(@idurl)这是一个好习惯,是的。对于页面,它们通常具有与值相同的URI;对于其他项目,它们通常将具有不同的URI作为值(@id对于该事物,url关于该事物的页面)。-确保我们在同一个页面上:对于基于散列的ID,您是指在链接数据上下文中的散列URL,而不是在单页应用程序/基于JavaScript的站点的上下文中,对吗?
UNOR

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

7

在您拥有的“本地业务属性”部分中,从Google Developers阅读以下链接- 数据类型-本地业务

[...] ID应该是稳定的,并且不会随时间变化。Google搜索将网址视为不透明的字符串,并且不一定是有效链接。如果企业有多个位置,请确保@id在每个位置都是唯一的。

@id适用于几乎所有对象

希望我的回答对您有所帮助:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.