You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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语法规则:

  1. value用于绑定具体个体,但这里不需要指定特定城市,因此完全不需要使用value关键字
  2. 要表达“自身出生地与配偶出生地相同”,需用sameAs直接连接两个属性表达式——bornIn表示自身出生地,hasSpouse o bornIn表示配偶的出生地,两者用sameAs关联即可满足约束

内容的提问来源于stack exchange,提问作者a_guest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 15:18:30