I am reading about/working on the knowledge representation using OpenCog framework http://wiki.opencog.org/w/OpenCog_Framework which essentially is special kind of probabilistic logic (s.c. PLN - Probabilistic Logic Networks) that smoothly generalizes crisp logic (by assigning strength and confidence to the crisp truth value).
My question is - how to represent attributes in logic (in OpenCog or in any other logic). E.g. I want to express the statement
'An apple #1 has price 1$' (
#1 is Apple; #1.price=1$). How can I do this in any logic?
My current solution is that I need to define 3 entities: apple a1, price p1, 1$_value v1 and enter those entities into whole-part relationships: whole_part_relation(a1, p1), whole_part_relation(p1, v1). Those relations are for instances and apparently similar relations can be formed for classes (concepts) as well. Is my representation of attributes by whole-part-relationships acceptable?
OpenCog has list of all supported types of terms (s.c. Atoms) and their relationships (e.g. Links) http://wiki.opencog.org/w/Category:Atom_Types but one can see that attribute link/relationship is not first class citizen in this logic as it is not in many other logics as well.
So - my question is - how to represent attributes in the logics in which attributes are not first class citizens?
There is need to formalize software development, to mode real world, to create knowledge bases for e.g. robotics and therefore the conceptualization of notion of attribute (characteristic) is important!