【问题标题】:How to describe an ontology to infer wheather two individuals are the same or not如何描述一个本体来推断两个人是否相同
【发布时间】:2023-04-06 16:51:01
【问题描述】:

我想推断两个人是否相同。 我给你看三个案例。在第一种情况下,我描述了一个本体来获得推理结果,这意味着“如果两个人具有相同的属性值,那么两个人是相同的”。案例说明如下。

Person rdf:type owl:Class .
ID rdf:type owl:Class .
hasID rdf:type owl:ObjectProperty ,
               owl:InverseFunctionalProperty .
person1 rdf:type owl:NamedIndividual ,
                 Person ;
        hasID id1 .
person2 rdf:type owl:NamedIndividual ,
                 Person;
        hasID id1 .
id1 rdf:type owl:NamedIndividual ,
             ID .

推理的结果是“person1 owl: sameAs person2”,因为person1和person2的hasID值相同,都是id1。获得预期结果的关键是我将 hasID 描述为 owl:InverseFunctionalProperty。没问题。

在第二种情况下,两个人具有相同的两个属性。一个属性是 hasName。另一个是mailTo。我想得到推断的结果,这意味着“如果两个人具有相同的 hasName 值 和 相同的 mailTo 值,那么两个人是相同的”。但是我不知道如何描述一个本体。 我该如何描述它?

第三种情况更复杂。如何描述“hasID 的相同值或 表示“hasName 和 的相同值的连词本体上mailTo的值一样吗?

【问题讨论】:

  • w3.org/TR/owl2-new-features/#F9:_Keys - 如果这还不够,请使用 SWRL
  • 我试图用 hasKey 描述一个本体。我将 hasID 描述为一个类的键,将 hasName 和 mailTo 描述为另一个类的键。随后,我描述了一个班级,它是一个班级和另一个班级的交集,并为每个班级设置了三个人。推理的结果是意料之中的。谢谢!
  • 如果您找到了解决方案,请在此处提供作为答案并接受您自己的答案。这也有助于其他人,并标记正在解决的主题
  • 当然。请稍等。
  • 我找到了解决方案。见答案。

标签: rdf owl ontology inference rdfs


【解决方案1】:

第三种情况的答案如下。

#  Data properties

hasID rdf:type owl:DatatypeProperty .
hasName rdf:type owl:DatatypeProperty .
mailTo rdf:type owl:DatatypeProperty .

#  Class
Person rdf:type owl:Class ;
       owl:hasKey ( hasID
                  ) ,
                  ( hasName
                    mailTo
                  ) .

#  Individuals
person1 rdf:type owl:NamedIndividual ,
                 Person ;
        hasID 12 ;
        hasName "Donald" ;
        mailTo "D_Trump@ex.com" .
person2 rdf:type owl:NamedIndividual ,
                 Person ;
        hasID 12 ;
        hasName "Don" ;
        mailTo "D_Trump@ex.com" .
person3 rdf:type owl:NamedIndividual ,
                 Person ;
        hasID 34 ;
        hasName "Bill" ;
        mailTo "B_Clinton@ex.com" .
person4 rdf:type owl:NamedIndividual ,
                 Person ;
        hasID 56 ;
        hasName "Bill" ;
        mailTo "B_Clinton@ex.com" .
person5 rdf:type owl:NamedIndividual ,
                 Person ;
        hasID 78 ;
        hasName "Don" ;
        mailTo "D_Trump@ex.com" .
person6 rdf:type owl:NamedIndividual ,
                 Person ;
        hasID 90 ;
        hasName "Barack" ;
        mailTo "B_Obama@ex.com" .

查看上面类表达式中的“owl:hasKey”。一对括号中的属性是键的组成部分。因此owl:hasKey (hasName mailTo) 的意思是“hasName and mailTo”。一对括号表示独立键。具体来说,"hasID" 和 "hasName and mailTo" 独立作为键。它的意思是“或”。 我尝试了上面的代码,在Protege5.5.0上使用Pellet,可以得到预期的结果。具体来说,person1、person2和person5是一样的,person3和person4是一样的,person6没有相同的个体。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多