2016-07-14 11 views
0

私はOWLを調査していますが、それでもまだ理解できません。ファミリークラスがあるとします。それはBadFamilyとGoodFamilyのサブクラスを持っています(これらはサブクラスではなく個人でもあります)。実世界の家族概念は、いくつかのオブジェクト(父、母、息子、娘の例として)の存在を暗示しています。家族の中には、お互いを愛し合ったり互いを憎むことができる人もいます(「愛」と「嫌い」は私が理解する限りの関係です)。したがって、BadFamilyでは、いくつかの人々がお互いを憎む。 GoodFamilyでいくつかの人々はお互いを愛しています。では、OWLでどのように表現できるのですか(Protegeの例か、基本的な方向のアドバイスは素晴らしいでしょう)。OWLの複雑な概念の説明

異なるケースの説明とみなすこともできます。同じクラスとリレーションがすべてのケースで使用されますが、異なる組み合わせで使用されます。

+0

あなたの定義は明確にする必要があります。お互いを愛し合っている人がいれば、それは良いことです。互いに憎む人がいれば、悪いですが、両方のタイプのプロパティにリンクされたメンバーを持つ家族はどのように分類されるべきですか? –

+0

事は私がクラス認識の仕事ではないことを意味します。それはいいのではないよファミリーやバッドファミリー、それだけでファミリー1、ファミリー2 ...ファミリーN ...主な質問は - ケース情報を保存する方法ですか? – arinarodionova

+0

質問は今はっきりしていません。良い/悪い家族の場合にはしばらくお待ちください。あなたはサブクラスGoodFamilyとBadFamilyを持つファミリーを持つことができますし、ファミリーファミリーも必要でしょう。次に、分類条件を定義します。家族1、家族2、家族3、Person1、Person2などのような人がいます。人は家族として主張されるか、推論によって推論されます。家族の個人分布は、2つのサブクラスの定義(匿名の同等クラスまたはサブクラスによる)に依存します。 –

答えて

0

これを実装する方法は次のとおりです。

:-family

--GoodFamily

--BadFamilly

-FamilyMember --LovesFamilyMember

と、オブジェクトのプロパティの

:あなたは、次の分類を作成することができます

-hasFamilyMe mber

-hasRelative

-lovesFamilyMember

-hatesFamilyMember

そのうち後者は、メンバーが自分自身だけを愛するときなど良い家族を分類除外するために、非反射宣言する必要があります。

次に、あなたはlovesFamilyMember some FamilyMemberの同等としてFamilyMemberを愛する人たちのクラス、およびGoodFamily' as equivalent of hasFamilyMember一部LovesFamilyMember`のクラスを定義する必要があります。

敬愛され、愛され、憎悪されたメンバーが同じ家族のものであることにさらに注意する必要があります。これは、最初にhasRelativeが、家族と同じ家族のメンバーとをリンクするオブジェクトプロパティであることを定義することによって行うことができます: inverse (hasFamilyMember) o hasFamilyMember。次に、クラスLovesFamilyMemberのメンバーシップの別の条件としてこの関係を追加する必要があります。そのクラスの完全な定義は、 lovesFamilyMember some FamilyMember and hasRelative some FamilyMemberになります。

そして、これは、このすべてが一緒に個人AB、およびFamily1で、タートルにどのように見えるかです: `GoodFamily`と` BadFamily`の

################################################################# 
    # Object Properties 
    ################################################################# 

    :hasFamilyMember rdf:type owl:ObjectProperty ; 
        rdfs:domain :Family ; 
        rdfs:range :FamilyMember . 

    :hates rdf:type owl:ObjectProperty , 
        owl:IrreflexiveProperty . 

    :hatesFamilyMember rdf:type owl:ObjectProperty ; 
         rdfs:subPropertyOf :hates ; 
         rdfs:range :FamilyMember . 

    :loves rdf:type owl:ObjectProperty , 
        owl:IrreflexiveProperty . 


    :lovesFamilyMember rdf:type owl:ObjectProperty ; 
         rdfs:subPropertyOf :loves ; 
         rdfs:range :FamilyMember . 

    ################################################################# 
    # Classes 
    ################################################################# 

    :BadFamily rdf:type owl:Class ; 
       rdfs:subClassOf :Family . 

    :Family rdf:type owl:Class . 

    :FamilyMember rdf:type owl:Class . 

    :GoodFamily rdf:type owl:Class ; 
       owl:equivalentClass [ rdf:type owl:Restriction ; 
             owl:onProperty :hasFamilyMember ; 
             owl:someValuesFrom :LovesFamilyMember 
            ] ; 
       rdfs:subClassOf :Family . 

:LovesFamilyMember rdf:type owl:Class ; 
        owl:equivalentClass [ owl:intersectionOf ([ rdf:type       owl:Restriction ; 
owl:onProperty :hasRelative ; 
                   owl:someValuesFrom :FamilyMember 
                   ] 
                   [ rdf:type owl:Restriction ; 
owl:onProperty :lovesFamilyMember ; 
                   owl:someValuesFrom :FamilyMember 
                   ] 
                  ) ; 
             rdf:type owl:Class 
             ] ; 
        rdfs:subClassOf :FamilyMember . 

    ################################################################# 
    # Individuals 
    ################################################################# 

    :A rdf:type owl:NamedIndividual , 
       :FamilyMember ; 
     :lovesFamilyMember :B . 

    :B rdf:type owl:NamedIndividual , 
       :FamilyMember . 

    :Family1 rdf:type owl:NamedIndividual , 
         :Family ; 
      :hasFamilyMember :A , 
           :B . 

    :Family2 rdf:type owl:NamedIndividual , 
         :Family . 

    ################################################################# 
    # General axioms 
    ################################################################# 

    [ rdf:type owl:AllDifferent ; 
     owl:distinctMembers (:A 
          :B 
         ) 
    ] . 
+0

本当に詳細な返信をありがとうございます。さて、私は、neo4jで知識を表現する方がはるかにシンプルであることが分かりました。なぜなら、個人やクラスを持つすべてのものがタスクを本当に複雑にするからです – arinarodionova