2

通常、XMLでは、短いテキスト文字列の前に#を付けると、XMLの「フラグメント」を示すために使用されます。ページ全体がロードされた、 @ID属性を使用してそのテキストがIDとして割り当てられたXHTML要素にジャンプするようにブラウザに指示するだけです。

RDFaでは、用語ごとに異なるURLを作成する必要性を回避するために、語彙を作成するときにこれを使用する傾向があるようです。プライマリURIが「www.example.com/vocabulary/」のようなものであるとすると、語彙の作成者は、語彙の用語のURIに次のようなURIを持たせるオプションがあります:「www.example.com/vocabulary/term1」またはこのように:「www.example.com/vocabulary#term1」。これらのURIが実際のWebページに解決されないエーテルURIとしてのみ使用される場合、それは違いのない区別です。ただし、上記の作成者が上記の語彙を説明するWebページを作成する場合は、語彙全体の説明がURL「www.example」の1つのWebページに表示されるため、後者を使用する方が簡単な場合があります。

ただし、ここに質問があります。RDFaに関するさまざまな説明やチュートリアルで、ハッシュマークが異なる方法で使用されていることもわかりました。@about属性内で次のように使用されているのを見ました。

<span about="#jane">
    <!-- Other RDFa or XHTML in here. -->
</span>

この場合、これらのチュートリアルでは、#janeが主語URIになり、述語と目的語を記述できるようになったと主張しています。しかし、#janeがURIの場合、「彼女」の完全なURIは何でしょうか。ページの最後に#janeが追加されたページの現在のベースURIでしょうか?その場合、about = "#jane"属性は、同じXHTML要素のID = "jane"属性と同等の機能を提供しますか?ただし、about = "#jane"は多くの異なるXHTML要素で使用される可能性があり、それらにすべて同一のIDが与えられるため、違法です。

ノードIDとして#janeを使用する空白ノード(bNode)を作成し、その空白ノードについて話し始めましたか?しかし、空白のノードを作成する正しい方法はabout = "[_:jane]"だと思ったので、混乱しました。

または、ID = "jane"属性を含むXHTML要素について話しているのでしょうか。同じページの他の場所で、作成されている場合とされていない場合がありますが、例では言及されていません。

または、これらすべてのチュートリアルと例のすべての作成者は、チュートリアル内で一般的に受け入れられている速記を使用しているだけですが、彼らが何をしているのかを説明していませんか?もしそうなら、私は彼らに会ったときに頭を逆さまに叩くつもりの男がたくさんいます。

4

1 に答える 1

2

RDFaでは、about = "#xyz"は、次のRDFステートメントのサブジェクトの識別子として相対URIを割り当てます。グローバルURIがローカル識別子からどのように派生するかについての正式な仕様は少し複雑ですが、実際には、リソースのベースURIとフラグメント部分になります。ドキュメントのベースURIが明示的に設定されていない場合、これは表現が取得されたURIになります。

したがって、product.htmlファイルがあり、これをURIで使用できるようにする場合

http://www.example.org/product.html(ローカルファイル名とパブリックURIは固定されていないことに注意してください)、

次にノード

<div typeof="http://purl.org/goodrelations/v1#Offering" about="#offer">
...
</div>

このデータ要素にグローバルURIを割り当てます

http://www.example.org/product.html#offer

さて、あなたはこれを何のために必要としますか?

最も一般的なケースは、別のリソースでこのエンティティに関するステートメントを作成する場合です。これを使用して、巨大なグラフ内の同じオブジェクトに関するすべての情報を照合できます。

ただし、同じ識別子で「about」を複数回使用することは完全に合法であるため、同じHTMLドキュメントに散在するメタデータを照合する手法を使用することもできます。

たとえば、これを使用できます

<div typeof="http://purl.org/goodrelations/v1#Offering" about="#offer">
<span property="gr:name">ACME Anvil</span>
</div>

以下の500行:

<div typeof="http://purl.org/goodrelations/v1#Offering" about="#offer">
<span property="gr:description">The ACME Anvil is the most advanced anvil that money can buy</span>
</div>

RDFaパーサーは、gr:nameプロパティとgr:descriptionプロパティの両方が同じオブジェクトに属していることを認識します。

マイクロデータ構文では、同じオブジェクトを参照するメタデータを含むHTML要素を直接リンクするためのもう少し洗練された「itemref」キーワードがあります。RDFaでは、「about」に同じ識別子を再利用することによってのみ、HTMLに散在するコンテンツの間接的な統合を行うことができます。

つまり、一言で言えば:

  1. RDFaでaboutを使用すると、データを他のデータとリンクするのに役立つため、非常に良い方法です。やれ!
  2. aboutプロパティにid="#xyz"を使用して、ナビゲーション目的で使用するフラグメントを再利用しないでください。

したがって、製品にジャンプするフラグメント識別子が

<div id="product"> blablabla> </div>

about =#product "は使用しないでください。たとえば、データオブジェクトを識別するためにabout ="#product_data"を使用してください。

  1. 同じオブジェクト(同じ製品、同じ会社など)について話している限り、同じ識別子でabout属性を複数回使用してもまったく問題ありません。

では、なぜフラグメント識別子が例でそれほど人気が​​あるのでしょうか。そのテンプレートを使用すると、個々のページのグローバル識別子を簡単に取得できるため、1,000個の商品が販売されているショップを考えてみてください。追加する場合

about="#product_data" 

製品データのマークアップ要素に対して、各単一の製品は、他の製品が参照できるグローバル識別子を持ちます。

警告:一部のテンプレートは、すべての個々のページのベースURIをメインページに設定します。この場合、すべての製品が同じURIを取得します。したがって、ベースURIをその個々のページの正規URI以外に設定すると、相対URIは機能しません。

于 2012-02-20T18:30:25.893 に答える