First, let's agree on what "cognitive" means in this discussion. By the term cognitive, we mean something that can use what it finds to modify its behaviour, and not merely by changing pre-existing internal parameters. Put another way, it can immediately build new structure into its structure, and that new structure is just as effective as the existing structure in controlling its behaviour.
The definition presupposes some attributes. The new structure has to have somewhere to "hook onto", so the existing structure needs to be realised, not virtual (in the way that a program has virtual structure, using fetches and jumps). To layer appropriately, the new structure needs to be indistinguishable from the existing once they have been fused together. This may not sound restrictive, but it severely limits what the old structure can be like, and the form of the new structure. The points of connection have to tolerate information coming in from the new structure, as well as driving information out into the new structure, so there can't be a strict direction at the connecting nodes (could there be a strict direction in the connections, if the control process that fits them together is made out of the same stuff as well?).
If we use a B2B engagement as an example, the Cognitive Core can build a model of what it is asked to find, then examine where it should find it (the market or exchange), modify its model based on what it does find and then return to the source of the request with useful information on what it did or did not find.
For a customer engagement on the web, the Cognitive Core needs to change its behaviour based on the behaviour of the particular customer, the behaviour of recent customers and customers in general and the requirements of the organisation supporting it. Incremental change of behaviour resulting from drift in customer behaviour is a necessity. There are several layers to the operation and control of the customer engagement process, with time cycles varying from seconds to hours.
For Data Mining, the Cognitive Core should be able to use Data Mining to discover a relation, then use that relation to control further Data Mining, and so on. It also should be able to learn incrementally, so it doesn't have to go back to the start each time - the content of the added structure needs to change smoothly over time. It is more like an intelligent query, where the result of the query changes the structure that generates the next intelligent query (in current OLAP, the user supplies the cognitive core, interpreting the result of one query before generating the next query).
A program requires the programmer to understand all the problem - to use a human cognitive core on assumed inputs and outputs and hope (pray?) that there are no changes of circumstance between coding the program and its application., or to make the program so restrictive in its inputs and outputs that there can be no chance of failure, except at the level of usability.
A rule does not have the incremental property - it cannot change smoothly over time, but must be recrafted when sufficient change has occurred to make it irrelevant or dead wrong (which meant it had to be tolerated while it was partly wrong).
An Artificial Neural Network also does not have the incremental property - a change in circumstance means going back to square one.
Neither of these last two approaches is sufficiently fast to warrant the description "cognitive", as the output may be available in weeks. This is satisfactory for long term stable problems with a single layer that can be captured with pre-cognition, but these are in the minority in the worlds of industry and, particularly, e-commerce.