I am trying to build knowledge base in OpenCog cognitive architecture (http://wiki.opencog.org/w/The_Open_Cognition_Project) and I see that OpenCog lacks usual means to express notions of object-oriented modelling paradigm.
E.g. OpenCog has no classes, but it has concepts (concrete concept can be class or instance, or both class and instance of some other class). And inheritance among classes can be expressed as
intensional inheritance link relationship among concepts.
E.g. OpenCog does not divide concepts in classes and instances, in OpenCog the notion
A is instance of class C one express via
extensional inheritance link relationship among concepts A and C.
One can read more about it in http://wiki.opencog.org/w/InheritanceLink. To make things more interesting (or confusing), the is-child-of notion can be expressed as set-membership relationship, but is-instance-of notion can be defined via relation among sets of attributes.
My questions are -
- Is object-oriented modelling and notions and oversimplification that can not be used in more advanced knowledge bases which try to express commonsense and advanced knowledge?
- Are OpenCog notions (as mentioned in my question) of intensional and extensional inheritance - are those notions used in other projects/endeavours and are there other non-OpenCog research that uses those notions?
- What modelling approach one should adopt in building sophisticated knowledge bases for Artificial General Intelligence applications? Is Object-Oriented modelling paradigm too Procrustean and narrow and applicable only for software coding?
- How sound is to preceive classes as the sets? In my experience as a programmer I don't perceive classes as the sets, because classes can be independent from its member, classes can have class level function, classes are used for the creation of class instances, so - class is not merely and set of instances, class is something more.