5

クラスからそれらのクラスに属する個体までプロパティを伝播するペレットを取得しようとしています。たとえば、プロパティ X を持つクラス A と rdf:type=Class A を持つ個人 B がある場合、推論を実行した後、個人 B にプロパティ X を持つようにします。私は、OWL 2 新機能ページで参照されているプロパティ チェーンを含める手法を使用しています。この手法は、プロパティ チェーンで独自のカスタム プロパティを使用すると完全に機能しますが、rdf:type 自体を使用しようとすると機能しません。ここに、私の RDF/XML の関連する切り抜きをいくつか示します。

存在論的クラス (Jena によって生成されます。「spread」プロパティに注意してください。これは、クラス Person の個体に伝播しようとしているものです):

<rdf:Description rdf:about="http://family/person">
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <owl:sameAs rdf:resource="http://family/person"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <owl:equivalentClass rdf:resource="http://family/person"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2002/07/owl#Nothing"/>
    <j.1:spread rdf:resource="http://spread/specificSpread"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>

「Spread」プロパティ自体 (Jena の API はオブジェクト プロパティ チェーンをサポートしていないため、Jena で生成されたものではなく、私が手動で作成しました):

<rdf:Description rdf:about="http://spread/generalSpread">
    <owl:propertyChainAxiom rdf:parseType="Collection">
        <owl:ObjectProperty rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#type"/>
        <owl:ObjectProperty rdf:about="http://spread/generalSpread"/>
    </owl:propertyChainAxiom>
</rdf:Description>

推論する前に、オイディプスという人物は次のように見えます。

<rdf:Description rdf:about="http://family/Oedipus">
    <rdf:type rdf:resource="http://family/person"/>
</rdf:Description>

アイデアは、推論の後、次のようになるということです。

<rdf:Description rdf:about="http://family/Oedipus">
    <rdf:type rdf:resource="http://family/person"/>
    <j.1:spread rdf:resource="http://spread/specificSpread"/>
</rdf:Description>

rdf:type を rdf:resource として参照することは、おそらくそれがリソースではないことを確信しているため、物事がおかしくなっていると感じています。しかし、それを修正する方法がわかりません。Pellet のコマンド ライン lint プログラムでも実行しましたが、次のような rdf:type の明示的なエントリが作成されたことを除いて、問題はないようでした。

<owl:ObjectProperty rdf:about="&rdf;type"/>

私には少し奇妙に見えますが、rdf:type への参照が理解されていないことを示している可能性もあります。

何が起こっているのか、誰にも光を当てることができますか? 誰かが提供できる助けを本当に感謝します。

4

1 に答える 1

2

非常に重要な編集

実際、OWL DL の領域内でプロパティーの伝搬が可能であることが判明しています。たとえばspread、値を使用してプロパティを伝播したい場合simpleSpread(両方が RDF で既に定義されていると仮定)、次のようにすることができます (RDF/XML で):

  <rdf:Description rdf:about="http://family/person">
    <rdfs:subClassOf>
        <owl:hasValue rdf:resource="http://spread/simpleSpread"/>
        <owl:onProperty rdf:resource="http://spread/hasSpread"/>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Restriction"/>
    </rdfs:subClassOf>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
  </rdf:Description> 

もうそれほど重要ではありません

情報を完全にするために、関連する回答情報をここに投稿します。これは、ペレット ユーザーのメーリング リストに参加している人々との会話から得られたものです。スレッドはアーカイブされ、私の最初のメッセージから始まります。スレッドをたどって、何が起こったのかを詳しく調べてください。

本質的に、OWL DLは、組み込みのプロパティとデータ型に対する「リフレクション」を許可しません。これを許可すると、OWL DLによって保証される多項式時間の決定可能性に違反する可能性があります。これを達成するには、OWL Full のOWL RL プロファイルを使用する必要があります。これは、OWL のすべてのものを同等に扱い、rdf:type.

これに関する主な問題は、DL と RL の両方をサポートする推論器 (または推論器の組み合わせ) を見つけることです。RL は DL よりもはるかに軽量で表現力が低いためです (多項式時間で決定可能であることが保証されていないことは言うまでもありません)。

于 2010-01-19T00:41:15.683 に答える