结构化数据 > 微数据 & Json-LD > 实体 ID > 片段标识符
Structured Data > Microdata & Json-LD > Entity IDs > Fragment Identifier
我想知道是否 better/proper 使用片段标识符格式引用实体 - 基本上是通过在名称前插入散列
[url] + # + [name]
=> http://example.com/page/#webPage
编辑:
在慷慨而伟大的@Unor 的友善回答之后,我添加了此编辑以尝试限制我的查询范围并阐明我遇到的主要问题。我还删除了大部分原始问题(大约 95%),(事后看来)我觉得这些问题有损于:
1.我的核心问题;和
2. 对未来读者的好处。
我的问题简述如下:
在 microdata 的 itemid 和 json-ld 的 @id 值的开头手动输入散列的做法是否有效?
这是我更详细地表达的问题:
我能否在微数据的 itemid 值和 json-ld 的 @id 值中插入哈希符号 (#),以创建有效的结果 URI,并正确有效地使用片段标识符?
因此,如果这是在网页上:
<div itemscope itemtype="http://www.schema.org/Person" itemid="#joe"></div>
或者如果这也在网页上:
{"@context":"http://schema.org",
"@type":"Person",
"@id":"#Joe"}
我知道他们会被读取来制作这样的 uri(假设消费者的相对构造就像 Google 的结构化数据测试工具所做的那样):
http://www.example.com/page#joe
是那个uri:
一个有效的uri;和
是否正确使用了片段标识符 (HASH)?
在请求 URI 时允许检索有关实体的描述是一种很好的做法(请参阅 Cool URIs for the Semantic Web: 1. Be on the Web.)。
通过使用 哈希 URI,您可以免费获得此功能:
http://example.com/flower
表示关于花的文档
http://example.com/flower#this
代表花
- → 检索
http://example.com/flower#this
时,得到文档about it
通过使用 Slash URIs,您必须自己实现重定向 (with status code 303):
http://example.com/flower
表示关于花的文档
http://example.com/flower/this
代表花
- → 当检索
http://example.com/flower/this
时,你会被 303 重定向到 URI about it (see an example)
因此,在不了解您的后端的情况下,我建议使用哈希 URI,因为它通常更容易设置。
(我不确定 "webpage entity" 到底是什么意思,但只是为了确保:Hash URI 应该用于 "real-world object",而不是文档。)
编辑(针对您更新的问题):
是的,您可以通过仅指定片段组件(以 #
开头)在 itemid
和 @id
(example) 中提供哈希 URI。
因此在具有 URL http://example.com/foobar
的文档上,这四个语句生成相同的哈希 URI (http://example.com/foobar#this
):
<article itemscope itemtype="http://voc.example.net/Example" itemid="#this">
</article>
<article itemscope itemtype="http://voc.example.net/Example" itemid="http://example.com/foobar#this">
</article>
<script type="application/ld+json">
{
"@context": "http://voc.example.net/",
"@type": "Example",
"@id": "#this"
}
</script>
<script type="application/ld+json">
{
"@context": "http://voc.example.net/",
"@type": "Example",
"@id": "http://example.com/foobar#this"
}
</script>
(是的,您的示例 URI 是有效的;这里是 which characters the fragment component may contain。)
备注:
- 该片段区分大小写,因此您的
itemid="#joe"
和 "@id":"#Joe"
解析为不同的 URI(j
与 J
)。
- 当不指定绝对哈希 URI 时,您必须确保当前文档的 URL 是规范的。例如,尾部斜杠很重要(
/page/#joe
vs. /page#joe
);查询组件很重要(页面 /page?foo=bar
将创建哈希 URI /page?foo=bar#joe
,而不是 /page#joe
);如果主机有 www.
或不重要; URI 方案很重要(http
对比 https
);等等
我想知道是否 better/proper 使用片段标识符格式引用实体 - 基本上是通过在名称前插入散列
[url] + # + [name]
=> http://example.com/page/#webPage
编辑:
在慷慨而伟大的@Unor 的友善回答之后,我添加了此编辑以尝试限制我的查询范围并阐明我遇到的主要问题。我还删除了大部分原始问题(大约 95%),(事后看来)我觉得这些问题有损于: 1.我的核心问题;和 2. 对未来读者的好处。
我的问题简述如下:
在 microdata 的 itemid 和 json-ld 的 @id 值的开头手动输入散列的做法是否有效?
这是我更详细地表达的问题:
我能否在微数据的 itemid 值和 json-ld 的 @id 值中插入哈希符号 (#),以创建有效的结果 URI,并正确有效地使用片段标识符?
因此,如果这是在网页上:
<div itemscope itemtype="http://www.schema.org/Person" itemid="#joe"></div>
或者如果这也在网页上:
{"@context":"http://schema.org",
"@type":"Person",
"@id":"#Joe"}
我知道他们会被读取来制作这样的 uri(假设消费者的相对构造就像 Google 的结构化数据测试工具所做的那样):
http://www.example.com/page#joe
是那个uri:
一个有效的uri;和
是否正确使用了片段标识符 (HASH)?
在请求 URI 时允许检索有关实体的描述是一种很好的做法(请参阅 Cool URIs for the Semantic Web: 1. Be on the Web.)。
通过使用 哈希 URI,您可以免费获得此功能:
http://example.com/flower
表示关于花的文档http://example.com/flower#this
代表花- → 检索
http://example.com/flower#this
时,得到文档about it
通过使用 Slash URIs,您必须自己实现重定向 (with status code 303):
http://example.com/flower
表示关于花的文档http://example.com/flower/this
代表花- → 当检索
http://example.com/flower/this
时,你会被 303 重定向到 URI about it (see an example)
因此,在不了解您的后端的情况下,我建议使用哈希 URI,因为它通常更容易设置。
(我不确定 "webpage entity" 到底是什么意思,但只是为了确保:Hash URI 应该用于 "real-world object",而不是文档。)
编辑(针对您更新的问题):
是的,您可以通过仅指定片段组件(以 #
开头)在 itemid
和 @id
(example) 中提供哈希 URI。
因此在具有 URL http://example.com/foobar
的文档上,这四个语句生成相同的哈希 URI (http://example.com/foobar#this
):
<article itemscope itemtype="http://voc.example.net/Example" itemid="#this">
</article>
<article itemscope itemtype="http://voc.example.net/Example" itemid="http://example.com/foobar#this">
</article>
<script type="application/ld+json">
{
"@context": "http://voc.example.net/",
"@type": "Example",
"@id": "#this"
}
</script>
<script type="application/ld+json">
{
"@context": "http://voc.example.net/",
"@type": "Example",
"@id": "http://example.com/foobar#this"
}
</script>
(是的,您的示例 URI 是有效的;这里是 which characters the fragment component may contain。)
备注:
- 该片段区分大小写,因此您的
itemid="#joe"
和"@id":"#Joe"
解析为不同的 URI(j
与J
)。 - 当不指定绝对哈希 URI 时,您必须确保当前文档的 URL 是规范的。例如,尾部斜杠很重要(
/page/#joe
vs./page#joe
);查询组件很重要(页面/page?foo=bar
将创建哈希 URI/page?foo=bar#joe
,而不是/page#joe
);如果主机有www.
或不重要; URI 方案很重要(http
对比https
);等等