1

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

我怎样才能做到这一点?

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

4

1 回答 1

2

目前还不完全清楚你的意思是让两个属性相等。默认情况下,两个属性可以是不同的,所以你不需要做任何特别的事情来它们不相等。但是,如果问题得到澄清,也许可以添加更多信息。

这么说并非完全微不足道,例如,

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

在 OWL 中,但你可以做到。如果您想对所有课程都这么说,正如您所指出的,您可以使用owl:equivalentProperty. 现在,当你说那p是 的等价属性时r,你也可以说

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。这意味着您可以通过进行两个子属性断言来说类 A 的 hasFinish 和 hasColor 是相同的

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

这些假设 A 型个人是这些陈述的主题。如果 A 实际上是这里的范围,那么您只需使用

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

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

A ≡ ∃RA .Self

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

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

生成的本体看起来像(在 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>

在海龟中:

@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 .
于 2013-11-25T17:23:20.953 回答