目前还不完全清楚你的意思是让两个属性不相等。默认情况下,两个属性可以是不同的,所以你不需要做任何特别的事情来让它们不相等。但是,如果问题得到澄清,也许可以添加更多信息。
这么说并非完全微不足道,例如,
∀a,x 。A(a) → (hasFinish(a,x) ⇔ hasColor(a,x))
在 OWL 中,但你可以做到。如果您想对所有课程都这么说,正如您所指出的,您可以使用owl:equivalentProperty
. 现在,当你说那p
是 的等价属性时r
,你也可以说
p ⊑ r
r ⊑ p
也就是说,每个p
和r
都是另一个的子属性。在 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 .