n-арные отношения - один из способов справиться с этим.Другой - через цепочку собственности.Для этого я приму диаграмму, приведенную ниже.Здесь связанные свойства providesEmploymentContract, hasEmployeeAsParticipant
представляют свойство hasEmployee
.Это означает, что Employer
, который находится в providesEmploymentContract
отношении с EmploymentContract
, где EmploymentContract
находится в hasEmployeeAsParticipant
с Employee
, представляет собой Employer
, который находится в hasEmployee
отношении сEmployee
.
Аналогичные отношения могут быть установлены для hasEmployer
на основе диаграммы.В Протеже это можно представить следующим образом:
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