本体属性之间的平等关系

时间:2013-11-24 23:42:47

标签: rdf owl ontology rdfs description-logic

我有2个属性,例如'hasColor'和'hasFinish'。我想用本体表达,在本体类A的情况下,属性'hasColor'和'hasFinish'相等(owl:equivalentProperty)。但是在本体B类的情况下,属性'hasColor'和'hasFinish'不相等。

我怎样才能做到这一点?

一种方法可能是创建'hasColor'和'hasFinish'属性,将A类作为范围并将它们设置为相等。然后创建另一个'hasColor'和'hasFinish'属性,类B作为范围,没有相同的关系。但这是正确的做法吗?

1 个答案:

答案 0 :(得分:2)

通过制作两个 un -equal属性,你的意思还不完全清楚。默认情况下,两个属性可以是不同的,因此您实际上不必执行任何特殊操作它们是不相等的。但是,如果问题得到澄清,也许可以添加更多信息。

这样说,例如,

并非完全无足轻重
  

∀a,x。 A(a)→(hasFinish(a,x)⇔hasColor(a,x))

在OWL中,你可以做到。如果你想对所有课程说这个,你可以按照你的指示使用owl:equivalentProperty。现在,当你说pr的同等财产时,你也可以说

  

p⊑r
  r⊑p

即,pr中的每一个都是另一个的子属性。在OWL 2中(但遗憾的是,不是OWL 2 DL ,正如Antoine Zimmermann在评论中指出的那样),你可以断言给定的属性是链的超级属性属性,例如,

  

hasFather•hasBrother⊑hasUncle

其中说如果有人有一个有兄弟的父亲,那么那个父亲的兄弟就是那个人的叔叔。

还有一个名为rolification的概念,已经在OWL 2 rolification中进行了更详细的描述,这是创建一个对应于一个类的属性的过程,该类将该类的每个个体与自身相关联。对于您的课程 A ,会有一个关系 R A 将每个 A 与自身联系起来,并且仅关联那些情况。如果你看一下像

这样的房产链
  

R A •hasFinish

你会注意到它确实是hasFinish的子属性,其中第一个参数是 A 。这意味着您可以通过制作两个子属性断言来说hasFinish和hasColor与A类相同

  

R A •hasColor⊑hasFinish
  R A •hasFinish⊑hasColor

这些假设A类个体是这些陈述的主语。如果A实际上是此处的范围,那么您只需使用

  

∀a,x。 A(a)→(hasFinish(x,a)⇔withColor(x,a))
  hasColor•R A ⊑hasFinish
  hasFinish•R A ⊑hasColor

要获取属性R A ,您需要添加定义

  

A≡∃R A .Self

到你的本体论。在Protégé,这看起来像:

enter image description here enter image description here enter image description here

,结果本体看起来像(在RDF / XML中):

<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns="http://example.org/ep#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
  <owl:Ontology rdf:about="http://example.org/ep"/>
  <owl:Class rdf:about="http://example.org/ep#A">
    <owl:equivalentClass>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="http://example.org/ep#R_A"/>
        </owl:onProperty>
        <owl:hasSelf rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
        >true</owl:hasSelf>
      </owl:Restriction>
    </owl:equivalentClass>
  </owl:Class>
  <owl:ObjectProperty rdf:about="http://example.org/ep#hasFinish">
    <owl:propertyChainAxiom rdf:parseType="Collection">
      <owl:ObjectProperty rdf:about="http://example.org/ep#R_A"/>
      <owl:ObjectProperty rdf:about="http://example.org/ep#hasColor"/>
    </owl:propertyChainAxiom>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="http://example.org/ep#hasColor">
    <owl:propertyChainAxiom rdf:parseType="Collection">
      <owl:ObjectProperty rdf:about="http://example.org/ep#R_A"/>
      <owl:ObjectProperty rdf:about="http://example.org/ep#hasFinish"/>
    </owl:propertyChainAxiom>
  </owl:ObjectProperty>
</rdf:RDF>

和Turtle:

@prefix :      <http://example.org/ep#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

:hasFinish  a                   owl:ObjectProperty ;
        owl:propertyChainAxiom  ( :R_A :hasColor ) .

:A      a                    owl:Class ;
        owl:equivalentClass  [ a               owl:Restriction ;
                               owl:hasSelf     true ;
                               owl:onProperty  :R_A
                             ] .

:hasColor  a                    owl:ObjectProperty ;
        owl:propertyChainAxiom  ( :R_A :hasFinish ) .

<http://example.org/ep>
        a       owl:Ontology .

:R_A    a       owl:ObjectProperty .