10

在描述逻辑中,有一个称为“rolification”的概念(OWL 和规则,第 3.2 节)。它将概念(类)转换为角色(属性)。例如,当我们 rolify 时R(x),我们得到r(x,x)。这种技术对于在 DL 中表达一些规则很有用。

我们如何在 OWL 2 中做到这一点?OWL 2 规范中似乎没有直接支持 rolification 。

4

1 回答 1

17

您链接到的论文的第 3.2 节说:

确实有可能将此规则转换为 OWL 2——然而这涉及到一种我们称之为 rolification 的转换:概念A的 rolification 是由公理 A ≡ ∃RA .Self 定义)角色R A。有了 rolification,我们现在可以用公理表达规则 (1) ...</p>

OWL2 不支持直接表达象Elephant(x) ∧ Mouse(y) → bigThan(x,y)这样的公理。据我了解,您手动使用论文描述的 rolification 过程来生成可以直接在 OWL2 中表达的新公理。

罗化

至于具体的过程,如果你想表达象Elephant(x) ∧ Mouse(y) → bigThan(x,y),你首先将类ElephantMouse类化。这意味着您引入了新的角色(属性)R ElephantR Mouse(但您不删除类ElephantMouse)。这些新角色使得R Elephant (x,x)当且仅当Elephant(x)。这是通过添加公理来强制执行的

        大象 ≡ ∃R大象.Self

        鼠标 ≡ ∃R鼠标.Self

每一个都可以在 OWL2 中表达。有了这两个公理,您终于添加了子属性链公理

        R大象• topObjectProperty • R鼠标⊑ 大于

这在 OWL2 中也可以表达。因为对于任何大象e和任何老鼠m,我们有

        R大象(e,e)

        顶部对象属性(e,m)

        R鼠标(米,米)

然后通过子属性链公理,我们有

        大于(e,m)

这正是我们想要表达的。

公理语法

在 Protege 接受的输入语法中,这些公理写成如下。

        Elephant EquivalentTo R_Elephant some Self
        Mouse EquivalentTo R_Mouse some Self
        R_Elephant o topObjectProperty o R_mouse SubPropertyOf largeThan

在 Protege 中,它们如下所示。

大象化公理 鼠标移动公理 子属性链公理

在 N3 中:

@prefix :        <http://www.example.org/rolification#> .
@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#> .

:Elephant
      a       owl:Class ;
      owl:equivalentClass
              [ a       owl:Restriction ;
                owl:hasSelf "true"^^xsd:boolean ;
                owl:onProperty :R_Elephant
              ] .

:R_Elephant
      a       owl:ObjectProperty .

:biggerThan
      a       owl:ObjectProperty ;
      owl:propertyChainAxiom
              (:R_Elephant owl:topObjectProperty :R_Mouse) .

:Mouse
      a       owl:Class ;
      owl:equivalentClass
              [ a       owl:Restriction ;
                owl:hasSelf "true"^^xsd:boolean ;
                owl:onProperty :R_Mouse
              ] .

<http://www.example.org/rolification>
      a       owl:Ontology .

:R_Mouse
      a       owl:ObjectProperty .

在 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="http://www.example.org/rolification#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
  <owl:Ontology rdf:about="http://www.example.org/rolification"/>
  <owl:Class rdf:about="http://www.example.org/rolification#Elephant">
    <owl:equivalentClass>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="http://www.example.org/rolification#R_Elephant"/>
        </owl:onProperty>
        <owl:hasSelf rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
        >true</owl:hasSelf>
      </owl:Restriction>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:about="http://www.example.org/rolification#Mouse">
    <owl:equivalentClass>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="http://www.example.org/rolification#R_Mouse"/>
        </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://www.example.org/rolification#biggerThan">
    <owl:propertyChainAxiom rdf:parseType="Collection">
      <owl:ObjectProperty rdf:about="http://www.example.org/rolification#R_Elephant"/>
      <rdf:Description rdf:about="http://www.w3.org/2002/07/owl#topObjectProperty"/>
      <owl:ObjectProperty rdf:about="http://www.example.org/rolification#R_Mouse"/>
    </owl:propertyChainAxiom>
  </owl:ObjectProperty>
</rdf:RDF>
于 2013-06-07T17:49:32.107 回答