I was contacted recently by Yuriy Guskov who has written a critique of semantic web and semantic programming.
Obviously there are many details that Yuriy raises that it would be interesting to discuss, such as about the nature of references and their context and how SP intends to define contexts, some of which will become clearer when I put together an updated version of the 2008 paper and publish more details about how I am actually implementing SP.
However, there is one general comment that I would like to make just to be sure that a key aspect of SP is sufficiently clear. There is no expectation that humans will ever 'read' the SP Graph directly. The SP Graph is intended to represent semantic relationships and information as accurately as possible for the SP Agents, not for humans. That is why the SP Graph is constructed out of unique IDs, not out of words or text.
In the same way that humans use OpenOffice to read .odt files (viewing the data as a WYSIWYG formatted text file, not a large block of XML), so too humans will need to use SP Agents to read and interact with the SP Graph. Language is a very useful way for humans to interact with each other and with recorded information, but human languages are often very ambiguous with a large amount of unspoken context. Computers (internally) require a much higher degree of semantic precision in how their data is organised so that their deterministic syntactical manipulations of that data is semantically correct.
In many ways, therefore, SP can be seen as a step away from many of the current approaches to artificial intelligence, indeed it is not an attempt to create artificial intelligence. Rather, SP is an attempt to improve the way that humans directly program computers.