在OWL中定义类时,如何约束对象属性指向同一个体?
OWL 2类定义问题:修正配偶同出生地人群的类表达式
正在学习《OWL 2 Web Ontology Language Primer》,基于书中的“families”示例本体做扩展,已新增City类和bornIn对象属性,属性定义如下:
ObjectProperty: bornIn Domain: Person Range: City Characteristics: Functional
需要定义类X,指代配偶与自己出生地为同一城市的人,计划通过EquivalentTo用两个约束实现:
- 约束1:
X的所有个体必须有配偶,对应表达式:hasSpouse some Person - 约束2:本人与配偶的出生地(
City个体)相同,尝试用属性链hasSpouse o bornIn表示配偶的出生地,但不清楚如何和owl:sameAs结合(不想指定具体个体,需要占位逻辑)
之前尝试的表达式在Protégé类表达式编辑器报错,提示链操作符o位置错误,错误表达式如下:
Class X: EquivalentTo: Person and (hasSpouse some Person) and (hasSpouse o bornIn value owl:sameAs bornIn value)
(配图:Protégé类表达式编辑器报错界面)
正确的类表达式写法
用OWL Manchester语法,正确的等价类定义应该是:
Class: X EquivalentTo: Person and (hasSpouse some Person) and (bornIn sameAs (hasSpouse o bornIn))
错误原因说明
之前的表达式混淆了OWL语法规则:
value用于绑定具体个体,但这里不需要指定特定城市,因此完全不需要使用value关键字- 要表达“自身出生地与配偶出生地相同”,需用
sameAs直接连接两个属性表达式——bornIn表示自身出生地,hasSpouse o bornIn表示配偶的出生地,两者用sameAs关联即可满足约束
内容的提问来源于stack exchange,提问作者a_guest
相关产品推荐
相关产品推荐

