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.
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).