将属性与OWL / Protege中的类相关联

问题描述 投票:0回答:2

考虑这种情况:

  • 有雇主和雇员。我用类Employer和类Employee来模拟它。
  • 然后我用逆hasEmployer创建一个对象属性hasEmployee
  • 现在我还创建了一个名为EmploymentContract的类。

我想能够说,对于每个hasEmployer属性及其逆,必须存在与该关系相关的EmploymentContract

所以基本上我想要一个名为hasEmploymentContract的东西,它是一个具有域hasEmployer(一个对象属性)和范围EmploymentContract(一个类)的属性。

这是否可能在OWL中?我是否想错了问题呢?

如果可能,使用Protege Ontology Editor的实现也将非常受欢迎。

owl protege
2个回答
1
投票

n-ary关系是解决这个问题的一种方法。另一个是通过财产链接。为此,我将假设下面给出的图表。在这里链接属性providesEmploymentContract, hasEmployeeAsParticipant代表属性hasEmployee。这意味着EmployerprovidesEmploymentContractEmploymentContract关系,其中EmploymentContracthasEmployeeAsParticipantEmployee,是EmployerhasEmployee关系Employee

enter image description here

基于该图,可以为hasEmployer建立类似的关系。在Protege中,这可以表示如下:

Class: Employee    
Class: Employer    
Class: EmploymentContract

ObjectProperty: providesEmploymentContract
  Domain: Employer
  Range: EmploymentContract

ObjectProperty: agreesToEmploymentContract
  Domain:Employee
  Range: EmploymentContract

ObjectProperty: hasEmployerAsParticipant
  Domain: EmploymentContract
  Range: Employer

ObjectProperty: hasEmployeeAsParticipant
  Domain: EmploymentContract
  Range: Employee

ObjectProperty: hasEmployee
  SubPropertyChain: providesEmploymentContract o hasEmployeeAsParticipant
  Domain: Employer
  Range:  Employee
  InverseOf: hasEmployer

ObjectProperty: hasEmployer
  SubPropertyChain: agreesToEmploymentContract o hasEmployerAsParticipant
  Domain: Employee
  Range: Employer
  InverseOf: hasEmployee

-1
投票

尽管有讽刺的评论表明我是愚蠢的,但似乎确实无法直接实现这种逻辑。 W3C工作组已经发现这个缺点发布了一个关于通过其他方式实现这种行为的设计模式的“工作组注释”,我最终发现了这一点。事实上,文档头部的一个例子几乎与我的问题相同:

另一个例子是表示多个个体之间的关系,例如买方,卖方和在描述购买书籍时购买的对象。

对于其他任何感兴趣的人,可以在这里找到该文件:https://www.w3.org/TR/swbp-n-aryRelations/

© www.soinside.com 2019 - 2024. All rights reserved.