-
Notifications
You must be signed in to change notification settings - Fork 50
Description
I have a case where a material entity benefits from inheriting one or more characteristics of a "reference material", but since this leads to contradiction if using the functional "has characteristic" object property directly, I've had to use parent "part has characteristic" instead as a workaround. I'm checking here to see that this is ok practice (in lieu of making "has characteristic" non-functional. Simply put (and using the new "has characteristic value" proposed in #845 ) an instance of an ingredient, if also logically subclassed (typed) to a reference material, inherits all the 'part has characteristic' relations that the reference material has (these characteristics are never subject to change). In this regard, an instance of a characteristic and its value(s) (if in more than one unit) is more like a truthful statement that can be shared by as many entities as the truth holds for. Instances are shown as boxes with dashed borders.
But I'm mindful that characteristics are considered specifically dependent continuants, not generically dependent. But reference materials, like units, are abstract (even a 1kg reference material mass no longer has to reference some block of metal in paris due to the universal constant basis of SI units now). My standards example is an "ISO 1 reference material" (https://www.iso.org/standard/80702.html) class which by definition is always material at 20 Celsius. Below is an example of reference drinking water at 20 Celsius (along with ice at -18 Celsius), and a recipe s1:drinking_water ingredient at the reference temperature.
Here I have to use "part has characteristic" to avoid a reasoning error with the functional "has characteristic".
This all works well with protege hermit/pellet/ELK, and is even able to reason that if a collection of ingredients is at ISO 1 reference material temperature, then each ingredient is as well. Of course this is important to define the initial conditions for cooking various recipes, and so is tested within the context of our FoodOn Recipe 2.0 ontology model.
I did see RO "has prototype" and tried using that, but the inheritance of "part has characteristic" is a much simpler subclass inheritance method.