您链接到的论文第 3.2 节说:
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 RA defined by the axiom A ≡ ∃RA.Self. Armed with rolification, we can now express rule (1) by the axiom …
OWL2 不支持表达这样的公理大象(x) & 楔子;鼠标(y) → 大于(x,y)直接地。据我了解,你manually使用本文描述的罗化过程产生一个可以直接用 OWL2 表达的新公理。
罗化
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) RElephant and RMouse (but you do not delete the classes Elephant and Mouse). These new roles are such that RElephant(x,x) if and only if Elephant(x). This is enforced by adding the axioms
Elephant ≡ ∃RElephant.Self
Mouse ≡ ∃RMouse.Self
其中每一个都可以用 OWL2 来表达。有了这两个公理,您最终可以添加子属性链公理
RElephant • topObjectProperty • RMouse ⊑ biggerThan
这也可以用 OWL2 来表达。因为对于任何大象e和任何鼠标m,我们有那个
RElephant(e,e)
顶部对象属性(e,m)
RMouse(m,m)
然后根据子财产链公理,我们有
大于(e,m)
这正是我们想要表达的。
公理语法
在Protege接受的输入语法中,这些公理的写法如下。
大象相当于R_大象一些自我
老鼠相当于R_鼠标一些自我
R_大象o顶部对象属性oR_鼠标子属性大于
在 Protege 中,它们如下所示。
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 .
在 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>