如何在OWL中定义关系属性?

yan*_*nis 5 knowledge-management semantic-web owl ontology

在我的本体论中,我有个人"pic Joan",这是概念"山"和"端口Cerbère"的实例,这是概念"村庄"的一个实例.我有从"pic Joan"到"Cerbère"港口的"支配"关系(在这个意义上说,山被认为是靠近村庄,因此"支配它").

但事实上,我需要代表信息"pic Joan在距离西北1.5英里的地方塞尔塞雷港."

所以,从逻辑上讲,我需要附加关系"支配"数据属性"distance = 1.5M","direction = NW".

但是,AFAIK,OWL 不提供关系属性.我知道我可以为关系定义范围和域,但这不是关于范围和域,相同的关系在不同实例之间具有不同的属性值.

您如何在OWL中表示此信息?

(辅助问题:是否有其他本体论形式可以定义关系的属性?如果是,是否有像Protégé这样的工具来管理该形式主义的本体?)

Ign*_*zio 1

此用例最常见的模式是引入一个新类,例如RelativePosition

RelativePosition a Class.
relationType a DataProperty.
relationType domain RelativePosition.
// relationType values not specified here: might be "dominant","overlooking"...
// depending on your needs, this might need more structure.
firstFeature a ObjectProperty.
firstFeature domain RelativePosition.
secondFeature a ObjectProperty.
secondFeature domain RelativePosition.
// both properties can appear multiple times for one instance of RelativePosition
// to group sets of entities which share a relative position
Run Code Online (Sandbox Code Playgroud)

可以添加更多属性来引入距离或其他特征。

编辑:从下面约书亚的评论中复制了链接:对于n元关系,请参见此处

  • @yannis你在这里所做的本质上是试图表示一个n元关系。W3C 对于如何做到这一点有一些建议:[在语义 Web 上定义 N 元关系](http://www.w3.org/TR/swbp-n-aryRelations/)。一般来说,您要么需要具体化三元组(有点不方便,因为您关心的实际三元组不再“真正”存在于数据中),要么创建一个代表您可以附加额外数据的关系的个体。您不一定需要为每种附加数据类型声明具有域和范围的特定属性。 (4认同)