I need a FunctionalProperty to classes like this in Python using owlready2:
class student(Thing):
pass
class teacher(Thing):
pass
and so on, I have six of them.
I found a similar question here and the solution was this:
class has_color(ObjectProperty):
domain = [Or([Car,Bike,House])]
range = [Color]
or
domain = [Car | Bike | House]
But I have five classes and I get this error message:
Exception has occurred: TypeError LogicalClassConstruct.init() takes from 2 to 4 positional arguments but 6 were given
To reproduce it, just create six class and run this:
class has_value(FunctionalProperty):
domain = [
Or(myclass1, myclass2, myclass3, myclass4, myclass5, myclass6)
]
range = [float]
I'm not too familiar with the owlready2 library, but it seems you've missed some brackets from the example. The example defines the domain as
So your domain should be written as
Note the square brackets around the class list.