考虑这种情况:
Employer
和类Employee
对此进行建模。 hasEmployer
创建对象属性hasEmployee
。 EmploymentContract
的类。我想能够说,对于每个hasEmployer
属性及其逆属性,必须存在一个与该关系相关联的EmploymentContract
。
因此,基本上我想要一个名为hasEmploymentContract
的东西,它是域hasEmployer
(对象属性)和范围EmploymentContract
(一个类)的属性。
在OWL中这可能吗?我是不是在想这个问题呢?
如果可能,使用Protege Ontology Editor的实现也将不胜感激。
答案 0 :(得分:1)
providesEmploymentContract, hasEmployeeAsParticipant
代表属性hasEmployee
。这意味着与Employer
有providesEmploymentContract
关系的EmploymentContract
是EmploymentContract
与hasEmployeeAsParticipant
处于Employee
的{与Employer
有hasEmployee
关系的Employee
。
可以根据该图为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/