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

时间:2019-03-08 16:36:48

标签: owl protege

考虑这种情况:

  • 有雇主和雇员。我使用类Employer和类Employee对此进行建模。
  • 然后,我使用反hasEmployer创建对象属性hasEmployee
  • 现在,我还创建了一个名为EmploymentContract的类。

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

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

在OWL中这可能吗?我是不是在想这个问题呢?

如果可能,使用Protege Ontology Editor的实现也将不胜感激。

2 个答案:

答案 0 :(得分:1)

n元关系是处理此问题的一种方法。另一个是通过财产链。为此,我将假设如下图所示。这里的链接属性providesEmploymentContract, hasEmployeeAsParticipant代表属性hasEmployee。这意味着与EmployerprovidesEmploymentContract关系的EmploymentContractEmploymentContracthasEmployeeAsParticipant处于Employee的{与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 :(得分:-1)

尽管有尖锐的评论表明我很愚蠢,但看来确实不可能直接实现这种逻辑。 W3C工作组已经发现了此缺陷,并发布了有关通过其他方式实现此行为的设计模式的“工作组说明”,我最终发现了这一点。实际上,文档开头的示例与我的问题几乎相同:

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

对于其他感兴趣的人,可以在以下位置找到该文档:https://www.w3.org/TR/swbp-n-aryRelations/