Reputation: 1
I have a little problem with my ontology! We work on an ontology which manage a smart home. So we have objects like Tables, Doors, Lamps, .... A object that is smart has:
I have ObjectProperties for ex: hasActuator --> Door hasActuator DoorController
So now, the problem is the individuals! I would like that an object (Door_1 for example) has an actuator DoorController_1 but an other Door (Door_2) can't use the actuator DoorController_1 because he's already use !
How can I treat that? Which restrictions?
If I put hasActuator functional, it's only to say that a object can have only one actuator, but it's not that I want!
Upvotes: 0
Views: 567
Reputation: 85843
It sounds like you're trying to say an entity can't be in use by more than one thing at a time. This is a candidate for InverseFunctionalProperties. If you say that
uses is an inverse functional property
door1 uses controller1
door1 ≠ door2
Then you can infer that
not( door1 uses controller1 )
Stating that a property p is an inverse functional property says that
Functional(p): if p(x,y) & p(x,z) then y = z
Stating that a property p is inverse function is similar, but says that
InverseFunctional(p): if p(x,z) & p(y,z) then x = y
So, suppose you have the data:
uses(door1,controller1)
door1 ≠ door2
Now consider the hypothesis that
uses(door2,controller1)
From it and the data, you can derive
door1 = door2
But from the data we already have
door1 ≠ door2
and this is a contradiction, so the hypothesis must be false. Therefore:
not(uses(door2,controller1))
Upvotes: 3