|
In OWL 2, is there a way to declare that, for individuals :a, :b, :c, and :x, and ObjectProperty :y Given :x :y :a . And :x :y :b . Then :x :y :c . (And vice versa, preferably.) I suppose I could use class structure, but my :a, :b, and :c are really not classes, but individuals of a certain class. Is punning what I'm looking for here? Edit, responding to Antoine... Correct, :x is my variable. it's hard to explain my exact purpose, so let me give a concrete (if bad) example of a similar situation. Let's say I'm modeling permissions, and my :x is an instance of a class :User, and :y == :hasPermission. Now, a-c are :Read :Write :ReadWrite, all instances of a class :Permission (yes, doesn't really make sense, but it's the simplest similar example I can come up with.). What I want to say is that, for any :User :x:, if he :hasPermission both :Read and :Write, then he implicitly :hasPermission :ReadWrite. I could map that using classes, but I'm not sure that's the best option, because I have difficulty restricting the domain of my :hasPermission to :Permission, unless I define :Read, etc. as both :SubClassOf :Permission and a :Permission. And from my limited understanding, that gets into punning, and may not do what I want in an OWL 2 DL context. I'm reading http://www.w3.org/TR/swbp-classes-as-values/ at the moment, which I think is actually answering my question, but I don't think I'm happy with that answer. |
|
Yes, it's possible, in a roundabout way. Using your hasPermission, etc examples:
This allows the OWL tool to figure out:
So, that's...
Yeah, OWL makes some things pretty tricky. |

