OWL 2 rolification

Yan*_*ang 8 owl description-logic swrl

在描述逻辑中,存在称为"rolification"的概念(OWL和Rules,Sec 3.2).它将概念(类)转换为角色(属性).例如,当我们滚动时R(x),我们得到r(x,x).该技术对于在DL中表达一些规则很有用.

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

Jos*_*lor 15

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

它确实有可能把这种规则为OWL 2,然而这涉及我们称之为rolification转型:一个概念的rolification 一个是一个(新的)角色[R 一个由公理定义一个≡∃R 一个 .Self.武装起来,我们现在可以用公理来表达规则(1)......

OWL2不支持直接表达大象(x)∧鼠标(y)→更大(x,y)之类的公理.据我所知,你手动使用本文描述的滚动过程来产生一个可以直接在OWL2中表达的新公理.

Rolification

至于具体的过程,如果你想表达像象(x)∧鼠标(y)→更大的(x,y),你首先要升级大象鼠标.这意味着您引入了新角色(属性)R ElephantR Mouse(但您不删除大象鼠标类).这些新角色是R 大象(x,x)当且仅当大象(x).这是通过添加公理来强制执行的

        大象≡∃R 大象.自己

        老鼠≡∃R 老鼠.自己

每个都可以在OWL2中表达.有了这两个公理,你最终会添加子属性链公理

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

这也可以在OWL2中表达出来.由于任何大象é和任何鼠标,我们有

        R 大象(e,e)

        topObjectProperty(E,M)

        R 鼠标(m,m)

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

        biggerThan(E,M)

这正是我们想要表达的.

公理语法

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

        大象等同于 R_Elephant 一些自我
        鼠标相当于 R_Mouse 一些自我
        R_Elephant o topObjectProperty o R_mouse SubPropertyOf greaterThan

在Protege中,它们如下所示.

大象滚动公理 小鼠rolification公理 子属性链公理

在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 .
Run Code Online (Sandbox Code Playgroud)

在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>
Run Code Online (Sandbox Code Playgroud)

  • @Yang与OWL中n-ary属性的情况比较.OWL只有二进制属性.但是我们可以通过_adding一个新类和属性_来表示属性,从而在OWL中_represent_任意属性.例如,我们使用_betweenRelation(w)_,_ firstJrg(w,x)_,_ secondArg(w,y)_,_ thirdrdrg(w,z)_而不是_between(x,y,z)_.同样,我们不能在OWL中编写_Elephant(x)&Mouse(y) - > greaterThan(x,y)_,但我们可以引入两个新角色`R_elephant`和`R_mouse`并获得相同的结果. (2认同)