简体   繁体   中英

OWL 2 rolification

In description logic, there is a concept called "rolification" ( OWL and Rules, Sec 3.2 ). It converts a concept (class) into a role (property). For example, when we rolify R(x) , we get r(x,x) . This technique is useful for expressing some rules in DL.

How do we do this in OWL 2? It seems that there is no direct support for rolification in OWL 2 specification .

Section 3.2 of the paper that you linked to says:

It is indeed possible to translate this rule into OWL 2—however this involves a transformation which we call rolification: The rolification of a concept A is a (new) role R A defined by the axiom A ≡ ∃R A .Self . Armed with rolification, we can now express rule (1) by the axiom …

OWL2 doesn't support expressing an axiom like Elephant(x) ∧ Mouse(y) → biggerThan(x,y) directly. As I understand it, you manually use the process of rolification that the paper describes to produce a new axiom that can be expressed in OWL2 directly.

Rolification

As to the specific process, if you want to express something like Elephant(x) ∧ Mouse(y) → biggerThan(x,y) , you first rolify the classes Elephant and Mouse . This means that you introduce new roles (properties) R Elephant and R Mouse (but you do not delete the classes Elephant and Mouse ). These new roles are such that R Elephant (x,x) if and only if Elephant(x) . This is enforced by adding the axioms

Elephant ≡ ∃R Elephant .Self

Mouse ≡ ∃R Mouse .Self

each of which is expressible in OWL2. With those two axioms in hand, you finally add the subproperty chain axiom

R Elephant • topObjectProperty • R Mouse ⊑ biggerThan

which is also expressible in OWL2. Since for any elephant e and any mouse m , we have that

R Elephant (e,e)

topObjectProperty(e,m)

R Mouse (m,m)

then by the subproperty chain axiom, we have that

biggerThan(e,m)

which is exactly what we wanted to express.

Axiom Syntax

In the input syntax accepted by Protege, these axioms are written as follows.

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

In Protege they appear as follows.

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

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

In 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>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM