4

フラグメント識別子形式を使用してエンティティを参照する方が適切かどうか疑問に思っていました-基本的に名前の前にハッシュを挿入することによって

[url] + # + [name]=>http://example.com/page/#webPage

編集:

いつも寛大で偉大な@Unorからの親切な回答に続いて、この編集を追加して、クエリの範囲を限定し、私が直面している主な問題を明確にしました. また、元の質問のほとんど (約 95%) を削除しました。2. 将来の読者への利益。

これが私の問題です。

microdata の itemid と json-ld の @id 値の先頭に手動でハッシュを入力する方法は有効ですか?

これが私の問題であり、より詳細に表現されています:

microdata の itemid 値と json-ld の @id 値にハッシュ記号 (#) を挿入して、フラグメント識別子を適切かつ有効に使用して有効な結果の URI を作成できますか?

したがって、これが Web ページ上にある場合:

<div itemscope itemtype="http://www.schema.org/Person" itemid="#joe"></div>

または、これも Web ページにある場合:

{"@context":"http://schema.org",
"@type":"Person",
"@id":"#Joe"}

私は、それらが次のような URI を作成するために読み取られることを理解しています (Google の構造化データ テスター ツールが行うように、消費者による相対的な構築を想定しています):

http://www.example.com/page#joe

それはウリですか:

  1. 有効な uri; と

  2. フラグメント識別子 (HASH) を適切に使用していますか?

4

1 に答える 1

9

URI を要求するときに、エンティティに関する説明を取得できるようにすることをお勧めします (「セマンティック Web のクールな URI: 1. Web 上にいる」を参照)。

ハッシュ URIを使用すると、次の機能を無料で利用できます。

  • http://example.com/flower花に関する文書を表す
  • http://example.com/flower#this花を表す
  • → を取得すると、それに関するhttp://example.com/flower#thisドキュメントが取得されます

スラッシュ URIを使用することで、(ステータス コード 303 で)リダイレクトを自分で実装する必要があります。

  • http://example.com/flower花に関する文書を表す
  • http://example.com/flower/this花を表す
  • →取得時、それに関するhttp://example.com/flower/thisURIに303-redirectされる(例を見る

したがって、バックエンドについて詳しく知らなくても、通常は設定が簡単なハッシュ URI を使用することをお勧めします。

(「Webページエンティティ」とは正確に何を意味するのかわかりませんが、念のために言っておきますが、ハッシュURIはドキュメントではなく「現実世界のオブジェクト」のものでなければなりません。)


編集(更新された質問用):

はい、フラグメント コンポーネント ( で始まる) のみを指定することで、itemidおよび@id( example# ) でハッシュ URI を指定できます。

URL を持つドキュメントではhttp://example.com/foobar、これらの 4 つのステートメントは同じハッシュ 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 は有効です。フラグメント コンポーネントに含まれる可能性のある文字は次のとおりです。)

ノート:

  • フラグメントでは大文字と小文字が区別されるため、itemid="#joe""@id":"#Joe"は異なる URI ( jvs. J) に解決されます。
  • 絶対ハッシュ URI を指定しない場合は、現在のドキュメントの URL が正規のものであることを確認する必要があります。たとえば、末尾のスラッシュは重要です ( /page/#joevs. /page#joe)。クエリ コンポーネントが重要です (ページはではなく/page?foo=barHash URI を作成します)。ホストに問題があるかどうか。URI スキームが重要 ( vs. ); 等/page?foo=bar#joe/page#joewww.httphttps
于 2015-11-10T21:48:12.563 に答える