OWL 2 - 断言如果不喜欢smth那么不喜欢它

时间:2018-01-03 07:53:02

标签: owl semantic-web protege

我有公理:个人A不喜欢B个人所喜欢的。 然后,有属性,喜欢和不喜欢。 我想推断,当有人不喜欢某事时,他不喜欢它。

我已经补充说,喜欢和不喜欢是不相交的,但我不知道如何进一步使用Protege。

1 个答案:

答案 0 :(得分:1)

如果你不坚持推断对象属性,那么使用覆盖公理就可以解决这个问题。

我们说我们有:Person_A,如果他/她不喜欢某事,那么他/她不喜欢它。焦点需要改为:Person_A喜欢或不喜欢的事物。它们属于班级:ThingsThatAHasAttitudeTo

属性

首先,为喜欢和不喜欢声明一个属性是很重要的。

:dislikes rdf:type owl:ObjectProperty ;
          rdfs:subPropertyOf :hasAttitude ;
          owl:inverseOf :isDislikedBy .

:hasAttitude rdf:type owl:ObjectProperty .

:isDislikedBy rdf:type owl:ObjectProperty ;
              rdfs:subPropertyOf :isLikedOrDislikedBy .

:isLikedBy rdf:type owl:ObjectProperty ;
           rdfs:subPropertyOf :isLikedOrDislikedBy ;
           owl:inverseOf :likes .

:isLikedOrDislikedBy rdf:type owl:ObjectProperty .

:likes rdf:type owl:ObjectProperty ;
       rdfs:subPropertyOf :hasAttitude .

然后,如果你有一个只包含个人Person_A的枚举类,

:PersonClass_A rdf:type owl:Class ;
               owl:equivalentClass [ rdf:type owl:Class ;
                                     owl:oneOf ( :PersonClass_A
                                               )
                                   ] .

对于喜欢的事情,需要以下限制:

:ThingsThatALikes rdf:type owl:Class ;
                  owl:equivalentClass [ owl:intersectionOf ( :ThingsThatAHasAttitudeTo
                                                             [ rdf:type owl:Restriction ;
                                                               owl:onProperty :isLikedBy ;
                                                               owl:someValuesFrom :PersonClass_A
                                                             ]
                                                           ) ;
                                        rdf:type owl:Class
                                      ] .

......对于不喜欢的事情:

:ThingsThatADislikes rdf:type owl:Class ;
                     owl:equivalentClass [ rdf:type owl:Class ;
                                           owl:unionOf ( [ owl:intersectionOf ( :ThingsThatAHasAttitudeTo
                                                                                [ rdf:type owl:Restriction ;
                                                                                  owl:onProperty :isDislikedBy ;
                                                                                  owl:someValuesFrom :PersonClass_A
                                                                                ]
                                                                              ) ;
                                                           rdf:type owl:Class
                                                         ]
                                                         [ owl:intersectionOf ( :ThingsThatAHasAttitudeTo
                                                                                [ rdf:type owl:Restriction ;
                                                                                  owl:onProperty :isLikedOrDislikedBy ;
                                                                                  owl:someValuesFrom :PersonClass_A
                                                                                ]
                                                                              ) ;
                                                           rdf:type owl:Class
                                                         ]
                                                       )
                                         ] .

最后,重要的是要涵盖课程:ThingsThatAHasAttitudeTo

:ThingsThatAHasAttitudeTo rdf:type owl:Class ;
                          rdfs:subClassOf [ rdf:type owl:Class ;
                                            owl:unionOf ( :ThingsThatADislikes
                                                          :ThingsThatALikes
                                                        )
                                          ] .

课程需要脱节,个人不同。

通过这些定义,如果有个人是类:ThingsThatAHasAttitudeTo的成员,对于那些没有声明:Person_A喜欢的人,他们将被推断为类:ThingsThatADislikes的成员。 1}}。