我有2个属性,例如'hasColor'和'hasFinish'。我想用本体表达,在本体类A的情况下,属性'hasColor'和'hasFinish'相等(owl:equivalentProperty)。但是在本体B类的情况下,属性'hasColor'和'hasFinish'不相等。
我怎样才能做到这一点?
一种方法可能是创建'hasColor'和'hasFinish'属性,将A类作为范围并将它们设置为相等。然后创建另一个'hasColor'和'hasFinish'属性,类B作为范围,没有相同的关系。但这是正确的做法吗?
答案 0 :(得分:2)
通过制作两个 un -equal属性,你的意思还不完全清楚。默认情况下,两个属性可以是不同的,因此您实际上不必执行任何特殊操作让它们是不相等的。但是,如果问题得到澄清,也许可以添加更多信息。
这样说,例如,
并非完全无足轻重在OWL中,你可以做到。如果你想对所有课程说这个,你可以按照你的指示使用∀a,x。 A(a)→(hasFinish(a,x)⇔hasColor(a,x))
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 。这意味着您可以通过制作两个子属性断言来说hasFinish和hasColor与A类相同:
R A •hasColor⊑hasFinish
R A •hasFinish⊑hasColor
这些假设A类个体是这些陈述的主语。如果A实际上是此处的范围,那么您只需使用
∀a,x。 A(a)→(hasFinish(x,a)⇔withColor(x,a))
hasColor•R A ⊑hasFinish
hasFinish•R A ⊑hasColor
要获取属性R A ,您需要添加定义
A≡∃R A .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>
和Turtle:
@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 .