2016-05-07 8 views
2

常に同じレベルのクラス間でのみリンクされるオブジェクトプロパティを設計したいと考えています。例えば、OWLオブジェクトプロパティのドメイン/範囲の制限が同じレベルクラス

enter image description here

Iは、同一の上位クラスに属する兄弟ノードの円弧するプロパティisCounterPartOfを制限するよう

house isCounterPartOf cars 
bad isCounterPartOf good 
slow isCounterPartOf fast 

等のプロパティがリンクしないべきです異なるレベルのクラス間(異なる祖先を持つクラス)のように、

cars isCounterPartOf bad 
cars isCounterPartOf object 
cars isCounterPartOf Entity 

これを定義する方法はありますか1つのプロパティ?

答えて

3

あなたの目的は、:isCounterPartOfが2人の個人を結びつけ、1人が、 :Bad、次にもう1つは:Goodと分類されます。:isCounterPartOfのドメインと範囲を定義する必要はありません。owl:SymmetricPropertyです。クラス:Bad:isCounterPartOf some :Good:Goodに等価になるように定義する必要があるのは、:isCounterPartOf some :Badと等しく、クラスのすべての "ペア"です。

場合:

:A :isCounterPartOf :B

:C :isCounterPartOf :B

:A a :Slow

:C a :Bad

次いで:B:Fast:Goodとして分類されるであろう。 (コメントに基づいて)

解明

上記の例では、は、対称型オブジェクトのプロパティである:

:isCounterPartOf rdf:type owl:ObjectProperty , 
          owl:SymmetricProperty . 
  • :Good:Bad,:Slowおよび:Fastは、OWLクラスです。 (コードの書式設定が仕事)

    :悪いrdf:タイプowl:クラス; owl:equivalentClass [rdf:type owl:制限; owl:onProperty:isCounterPartOf; owl:someValuesFrom:Good ]。

    :Fast rdf:type owl:Class; owl:equivalentClass [rdf:type owl:制限; owl:onProperty:isCounterPartOf; owl:someValuesFrom:Slow ]。

    :いいえrdf:type owl:Class; owl:equivalentClass [rdf:type owl:制限; owl:onProperty:isCounterPartOf; owl:someValuesFrom:Bad ]。

    :遅いrdf:型owl:Class; owl:equivalentClass [rdf:type owl:制限; owl:onProperty:isCounterPartOf; owl:someValuesFrom:Fast ]。

  • :A:B、そして:Cは、それが主張されていないため、個人、以下のとおりです。 (コードの書式が機能しない理由を、再び、全く分から)

    :RDF:タイプフクロウ:NamedIndividual 、 :遅い。

    isCounterPartOf:B。

    :B rdf:owl:NamedIndividual、 owl:Thing。

    :C rdf:owl:NamedIndividual、 :Bad;
    isCounterPartOf:B。

  • あなたが推論を実行したときにこれらの主張に基づいて、あなたは次のような状況があります:

    :A rdf:type owl:NamedIndividual , 
          :Bad , #inferred 
          :Slow ; 
    
        :isCounterPartOf :B . 
    
    :B rdf:type owl:NamedIndividual , 
          :Fast , #inferred 
          :Good , #inferred 
          owl:Thing ; 
    
        :isCounterPartOf :A , #inferred 
            :C . #inferred 
    
    :C rdf:type owl:NamedIndividual , 
          :Bad , 
          :Slow ; #inferred 
    
        :isCounterPartOf :B . 
    
    +0

    を申し訳ありませんが、私はフクロウの構文で初心者です。私は「A:スロー」の略語を理解していない。マンチェスターの構文ですか?私が参照できる参考資料はありますか? –

    +0

    '' a 'は 'rdf:type'を表し、': 'が接頭辞なしで使用されるときはリソースが現在のオントロジの名前空間で定義されていると言う普通の方法です。したがって、あなたの質問で提供される文脈では、 ':A a:Slow'は「この知識ベースで定義された個人Aはこの知識ベースで定義されたSlowクラスのメンバーです」を意味することを意図していました。ご意見ありがとうございます、私はこれを明確にするために答えを更新します。 –

    +0

    ありがとうございました。私はあなたの更新を見ることを楽しみにしています。私はあなたの答えを本当に理解したとは思わない。 Bは個人かクラスですか? –

    関連する問題