I'm trying to express an axiom of the following kind:
"Water has some physical quantity called melting temperature, which has a value of 100.0"
I've tried definig the following class expression:
Water SubClassOf (hasPhysicalQuality some (MeltingTemperature and hasValue value 100.0f))
And I have the following assertions:
Water Type owl:Class
hasPhysicalQuality Type owl:ObjectProperty
hasValue Type owl:DataProperty
this_water Type Water
this_temperature Type MeltingTemperature
this_water hasPhysicalQuality this_temperature
this_temperature hasValue 50.0f
When I ran the Pellet reasoner, I was expecting to find inconsistency since the melting temperature (this_temperature) related to this_water has a value of 50.0f, not 100.0f. However, the reasoner did not indicate any inconsistency.
What am I doing wrong here?
EDIT: The correct axioms required were:
Water SubClassOf (hasPhysicalQuantity exactly 1 MeltingTemperature)
Water SubClassOf (hasPhysicalQuanlity some (MeltingTemperature and (hasValue value 100.0f)
hasValue Type owl:FunctionalProperty
You should make your data property functional - or, as you say in the comments, apply a cardinality restriction.