Property:Color

Defines the Color of an Object.

Semantic Approach
Take the color of an apple. Now think about and imagine its color. Is it Red, Green, Yellow, or all at once?

In such a case we need to be able to create an abstract construct called "AppleColor" which is an Enumeration of these three colors:

      

Now we take our "Apple" and add a Property called "Color" which is of the abstract type "AppleColor".

    

Note at this Place, that both, "Apple" and "AppleColor" are a Class. The difference between this Model and the real World is that "Apple" is a physical thing, whereas "AppleColor" is a virtual Construct.

At this Place we should think about how we got this construct: why is it not possible to have an Apple whose color is blue? In truth it's possible to paint an Apple blue, or make some kind of genetic experiment to color it up. So the Color of a Apple is just a "Color", and not a special "AppleColor". Real Apples are, in this sense, an instance of the Apple class, and while it's possible to have a blue Apple in theory, its never seen in nature - where the theory derives from.

But in that generic case it makes no sense to define a color at all - as long as we don't apply this attribute only to specific instances of an real object.

Color Space
There may be a need to define a volume in Color-Space which contains the possible colors. Another approach might be to use the spectrum and define tolerances on significant frequencies.

Even this Approach is very concrete to the real world; it's too hard to implement, so for practical purposes we have to abstract the real world.

Example Solution
As an solution we could make some fuzzy assumptions about our Apple. We could define the following:

color::Red color::Yellow color::Green

So the semantic reasoner has to decide that the truth is fuzzy between (and around) these extremes.