OWL Object属性对同一级别类的域/范围限制

时间:2016-05-07 09:50:14

标签: owl object-property

我想设计一个始终只在同一级别的类之间链接的对象属性。例如,

enter image description here

我想将属性isCounterPartOf限制为属于同一上层类的兄弟节点的弧,例如

house isCounterPartOf cars
bad isCounterPartOf good
slow isCounterPartOf fast

并且属性不应该在不同级别的类(具有不同祖先的类)之间链接,例如

cars isCounterPartOf bad
cars isCounterPartOf object
cars isCounterPartOf Entity

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

1 个答案:

答案 0 :(得分:3)

假设您的目标是:isCounterPartOf链接两个人,而其中一个是例如:Bad,然后另一个应归类为:Good,您不需要定义:isCounterPartOf的域和范围,只需它owl:SymmetricProperty。您只需要定义类,:Bad等同于:isCounterPartOf some :Good:Good等同于:isCounterPartOf some :Bad,并且分别定义所有“对”类。

然后是:

: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:类型owl:Class;      owl:equivalentClass [rdf:type owl:Restriction;                            owl:onProperty:isCounterPartOf;                            猫头鹰:someValues来自:好                          ]。

    :快速rdf:类型owl:Class;       owl:equivalentClass [rdf:type owl:Restriction;                             owl:onProperty:isCounterPartOf;                             猫头鹰:someValuesFrom:慢                           ]。

    :好rdf:类型owl:Class;       owl:equivalentClass [rdf:type owl:Restriction;                             owl:onProperty:isCounterPartOf;                             猫头鹰:someValuesFrom:不好                           ]。

    :慢速rdf:输入owl:Class;       owl:equivalentClass [rdf:type owl:Restriction;                             owl:onProperty:isCounterPartOf;                             猫头鹰:someValuesFrom:快                           ]。

  2. :A:B:C是个人,为此声明: (再次,不知道为什么代码格式不起作用)

    :一个rdf:type owl:NamedIndividual,             :慢;

    :isCounterPartOf:B。

    :B rdf:type owl:NamedIndividual,             猫头鹰:事情。

    :C rdf:type owl:NamedIndividual,             :坏;
       :isCounterPartOf:B。

  3. 根据这些断言,当您运行推理器时,您将遇到以下情况:

    :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 .