简体   繁体   中英

Protege Owl: restrictions on individuals

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:

  • an actuator which run an action like open a door for example
  • a sensor which gets informations about temperature for example

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!

The short solution

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 )

How it works

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(door 1 ,controller 1 )
door 1 ≠ door 2

Now consider the hypothesis that

uses(door 2 ,controller 1 )

From it and the data, you can derive

door 1 = door 2

But from the data we already have

door 1 ≠ door 2

and this is a contradiction, so the hypothesis must be false. Therefore:

not(uses(door 2 ,controller 1 ))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM