OWL对象属性domain/range同级限制类

OWL Object Property domain/range restrictions to the same level classes

我想设计一个对象 属性,它总是 link 只在相同级别的 class 之间编辑。例如,

我想把属性isCounterPartOf限制为属于同一个上class的兄弟节点的弧,比如

house isCounterPartOf cars
bad isCounterPartOf good
slow isCounterPartOf fast

并且 属性 不应 link 在 class 不同级别(具有不同祖先)之间,例如

cars isCounterPartOf bad
cars isCounterPartOf object
cars isCounterPartOf Entity

有没有办法只定义一个 属性?

假设您的 objective 是 :isCounterPartOf 链接两个人,其中一个是例如的成员。 :Bad,那么另一个应该归为:Good,不需要定义:isCounterPartOf的域和范围,只要是owl:SymmetricProperty。你只需要定义你的 类, :Bad 等同于 :isCounterPartOf some :Good:Good 等同于 :isCounterPartOf some :Bad, 并且对于所有 "pairs"分别为 类。

那么如果:

:A :isCounterPartOf :B

:C :isCounterPartOf :B

:A a :Slow

:C a :Bad

那么:B会被分类为:Fast:Good.

澄清(基于评论)

在上面的例子中, 1. :isCouterPartOf是对称对象属性:

:isCounterPartOf rdf:type owl:ObjectProperty ,
                          owl:SymmetricProperty .
  1. :Good:Bad:Slow:Fast是OWL类,其中: (不知道为什么代码格式不起作用)

    :差 rdf:type owl:Class ; owl:equivalentClass [ rdf:type owl:Restriction ; owl:onProperty:isCounterPartOf; owl:someValuesFrom:好 ].

    :快速 rdf:type owl:Class ; owl:equivalentClass [ rdf:type owl:Restriction ; owl:onProperty:isCounterPartOf; owl:someValuesFrom:慢 ].

    :好 rdf:type owl:Class ; owl:equivalentClass [ rdf:type owl:Restriction ; owl:onProperty:isCounterPartOf; owl:someValuesFrom:不好 ].

    :慢 rdf:type owl:Class ; owl:equivalentClass [ rdf:type owl:Restriction ; owl:onProperty:isCounterPartOf; owl:someValuesFrom:快 ] .

  2. :A:B:C 是个人,因此断言: (同样,不知道为什么代码格式不起作用)

    :A rdf:type owl:NamedIndividual , :慢;

    :isCounterPartOf :B .

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

    :C rdf:type owl:NamedIndividual , :不好;
    :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 .