Mozilla 将 itemid 属性定义为:
itemid 全局属性以项目的唯一全局标识符的形式提供微数据。
该标识符在同一网站的其他网页中、在整个万维网中或在几乎整个世界中是否是唯一的?
如果是这样,与 identifier 属性有什么区别?
其他背景:
为了澄清,我将解释我所做的研究以及我发现的不清楚的地方。
在其定义和背景说明中,标识符属性提到了一些注意事项。我认为这意味着当使用的特定子类型定义了更精确的标识符时不应该使用它,但我不明白它真正说的是什么。
有时,一个事物似乎是通过定义为 URL 的 itemid 属性来标识的:
<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://google.com/article"/>
在这种情况下,它还充当 URL,这使得事情变得更加混乱,因为 Schema.org 建议使用以下代码链接到描述事物的页面:
<div itemscope itemtype="https://schema.org/Person">
<a href="alice.html" itemprop="url">Alice Jones</a>
</div>
url
永远不会用作标识符。这是否意味着,只要相关,我应该更喜欢使用mainEntityOfPage
和itemid
的组合而不是url
,并且只能使用url
用于与事物相关的链接,但从未用于事物的主页?
虽然 Microdata 不是 RDF 序列化,但它接近 RDF 序列化(另请参阅:Microdata 到 RDF),并且用 RDF 术语解释这一点(例如使用 Turtle 序列化)可能会更容易。您可以使用 Gregg Kellogg 的 RDF Distiller 将微数据片段转换为 Turtle。
itemid
RDF 三元组由主语、谓语和宾语组成。例如:
<http://dbpedia.org/resource/The_Lord_of_the_Rings> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://schema.org/Book> .
或带有前缀名称:
@prefix dbr: <http://dbpedia.org/resource/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix schema: <http://schema.org/> .
dbr:The_Lord_of_the_Rings rdf:type schema:Book .
在微数据中,这个三元组可以这样编码:
<div itemid="http://dbpedia.org/resource/The_Lord_of_the_Rings" itemscope itemtype="https://schema.org/Book">
</div>
http://dbpedia.org/resource/The_Lord_of_the_Rings
的东西是一本书。
itemid
如果没有
itemid
,您将有一个空白节点作为主题:
[] rdf:type schema:Book .
<div itemscope itemtype="https://schema.org/Book">
</div>
这意味着什么:某物是一本书/一本书存在。
该标识符在同一网站的其他网页中、在整个万维网中或在几乎整个世界中是否是唯一的?
IRI 必须是全球唯一的。
IRI 不必是 HTTP/HTTPS IRI。即使它是 HTTP/HTTPS IRI,也不必在 Web 上可解析。
IRI 必须代表“实际事物”,而不仅仅是关于该事物的文档(当然,除非您想对那个文档说些什么)。 例如,第一个IRI代表托尔金的智力创造,而第二个和第三个IRI代表关于他的智力创造的文档:
http://dbpedia.org/resource/The_Lord_of_the_Rings
http://dbpedia.org/page/The_Lord_of_the_Rings
https://en.wikipedia.org/wiki/The_Lord_of_the_Rings
说
https://en.wikipedia.org/wiki/The_Lord_of_the_Rings
是
schema:Book
在语义上是错误的。如果您重复使用现有的 IRI,则必须确保根据其定义使用它们。
如果您创建自己的 IRI(在您自己的域下),则必须确保“保留”它们,以便它们的含义(=它们代表的内容)不会改变。
identifier
和
url
属性
虽然
identifier
属性
也可以保存主题 IRI 作为值,但它当然也可以保存任何其他类型的标识符,并且并非所有这些都是 IRI。 例如,如果您在网上商店销售产品,您可能希望以字符串形式提供其产品 ID。由于 IRI
https://example.com/products/555#this
代表实际产品(而不是产品页面),因此您可能需要提供产品页面的 URL:
<https://example.com/products/555#this>
rdf:type schema:Product ;
schema:identifier "555" ; # better use a 'schema:PropertyValue' item here
schema:url <https://example.com/products/555> .
现在,如果您在不提供主题 IRI 的情况下完成所有这一切,您会得到一些接近的含义,但缺点是数据消费者更难将您的数据与他们的数据集成,并且缺点是您和其他人无法链接到那个东西(这可以说是语义网的核心功能之一):
[]
rdf:type schema:Product ;
schema:identifier <https://example.com/products/555#this> ; # better use a 'schema:PropertyValue' item here
schema:identifier "555" ; # better use a 'schema:PropertyValue' item here
schema:url <https://example.com/products/555> .
如果您可以提供主题 IRI,则没有充分的理由不这样做。