Recursive object property in owl

2019-09-11 12:04发布

问题:

Can we model an object property to be recursive in owl? If not is there any work around?

E.g. I want to define workflow as a class in owl. Task and getSubTasks are class and object property in my ontology respectively. I want to model workflow as combination of task and getSubTasks fetched recursively.

回答1:

It sounds like you want to declare that getSubTasks, or some superproperty of it, is a transitive property, which you can do in OWL.

E.g., if you have a class Task, a property hasImmediateSubTask, and a property hasSubTask such that hasImmediateSubTask is a sub-property of hasSubTask

hasImmediateSubTask ⊑ hasSubTask

then from:

hasImmediateSubTask(a,b)
hasImmediateSubTask(a,c)

you can infer that:

hasSubTask(a,b)
hasSubTask(a,c)

Now, if you make hasSubTask be transitive, then from

hasSubTask(a,b)
hasSubTask(b,d)

you can infer that:

hasSubTask(a,d).