rdf:resource
、rdf:about
、およびrdf:ID
の概念的な違いは何ですか。私はいくつかの調査をしましたが、それらの違いはまだはっきりしていません。たとえば、リソースを初めて宣言するときにrdf:ID
を使用するかどうか、既存のリソースを参照するためにrdf:resource
を使用するなどです。
ちょっとした例を教えていただければ幸いです。
明確にするために、これはrdfを書く特定の方法、つまりRDF/XMLについてのみです。他の構文には、これらの違いはありません。
その免責事項を邪魔しないで:
私たちがやろうとしているのは、次の形式のステートメントを書くことです。
subject predicate object
特に:
subjectURI predicate objectURI
では、RDF/XMLでサブジェクトとオブジェクトのURIをどのように導入するのでしょうか。
rdf:about
は、ステートメントのサブジェクトURIを設定します。これは、絶対(http://example.com/
)であるか、ドキュメントのBASEに関連して解決されます(例:/foo/bar
、#frag
)。 (htmlのhref
のように)rdf:resource
は、ステートメントのオブジェクトURIを、ここでも絶対または相対のいずれかに設定します。rdf:ID
はサブジェクトURIを設定しますが、このドキュメント内にのみ含めることができます。 IDも1回しか使用できません。 htmlの<a name="baz">
またはid="baz"
と非常によく似ています。rdf:ID
は、
rdf:about
またはrdf:resource
をフラグメント#baz
で置き換えることができます。つまり、冗長であり、エラーの原因となる可能性があります。
振り返ってみると、何かがサブジェクトであるかオブジェクトであるかはRDF/XML構文から明らかであるため、通常、URIを指定するために必要な属性は1つだけです。
<ex:Foo ...> - subject
<ex:prop ... /> - property then object
</ex:Foo>
<ex:Foo ...> - subject
<ex:prop> - property
<ex:Bar ... /> - subject (and implictly an object chaining from previous)
...
(経験則:奇数行rdf:about
、偶数行、rdf:resource
)
また、要素でrdf:about
とrdf:resource
の両方を使用すると、ほとんどの場合エラーになります(サブジェクト位置またはオブジェクト位置にいます)。
rdf:ID
は避けてください。 rdf:about
とrdf:resource
をhrefのように使用します。前者は主語に、後者はオブジェクトに使用します。
rdf:ID
はプロパティ要素で使用できることを忘れましたが、予期しないことを実行します。トリプルを具体化します。 rdf:ID
は避けてください。
提供された回答の優れた点のいくつかを明らかにしたいと思いますが、rdf:IDとrdf:aboutに関してのみです。
タグはURIを構築するために使用されます。完全なURIが提供されていない場合(rdf:ID = "x"など)、生成されたURIは、通常はドキュメントの場所から派生したスコープ内のベースURIに相対的ですが、xml:base属性で指定できます。 。
(上記の)ポイントは、rdf:aboutは完全修飾URIである可能性があるため、設定するだけで簡単です。
rdf:IDを完全修飾URIにすることはできませんが、xml:base属性を手動で設定すれば、それを制御できます。
したがって、私にとっての一般的な経験則は、「グローバルに知られている」識別子にrdf:aboutを使用し(URIを常に同じにしたい場合)、URIがないローカルリソースを記述するときにrdf:IDを使用することです。現在のドキュメントの外側を気にしました。