如何找到重叠的类?

时间:2018-01-18 12:20:12

标签: owl

完整本体论:

Prefix: : <http://www.semanticweb.org/l.smolaga/ontologies/2018/0/untitled-ontology-14#>
Prefix: xsd: <http://www.w3.org/2001/XMLSchema#>

Ontology: <http://www.semanticweb.org/l.smolaga/ontologies/2018/0/untitled-ontology-14>

Datatype: xsd:int

DataProperty: hasAge
    Characteristics: 
        Functional
    Domain: 
        Person
    Range: 
        xsd:int

Class: Person

Class: Student
    EquivalentTo: 
        Person
         and (hasAge some xsd:int[>= "18"^^xsd:int , <= "26"^^xsd:int])

Class: Teenager
    EquivalentTo: 
        Person
         and (hasAge some xsd:int[>= "11"^^xsd:int , <= "19"^^xsd:int])

我试图找到一种方法来检查两个类是否重叠。 例如,我们假设我们有一个包含3个类(人,青少年和学生)的本体 少年相当于人,并且有一些xsd:int[>= 11, <=19 ] 学生相当于人,并且有一些xsd:int[>= 18, <=26 ]

我想检查哪个班级与学生重叠。我怎么能用owlapi / jena做到这一点?

1 个答案:

答案 0 :(得分:2)

最简单的方法是创建一个个人,例如x,其类型为(Person and Student and Teenager)。调用推理器,如果您的本体是一致的,则意味着个人可以属于所有类。如果本体不一致,则意味着个人不能同时属于所有类。

您应该可以在本体编辑器中执行此操作,或通过owl-api或jena以编程方式执行此操作。