ItemNode
The ItemNode, ItemClassNode and TagNode are all subtypes of LexicalNode. They are meant to be used for the construction of generic graphs.
Example
A labeled graph edge can be represented as
(EdgeLink (TagNode "some edge label") (ListLink (Item "thing A") (Item "thing B")))
The use of the ListLink is optional; thus, one could have written
(EdgeLink (Tag "some edge label") (Item "thing A") (Item "thing B"))
Commentary
The ItemNode is meant to be a more neutral replacement for the older concept of a ConceptNode. This addresses several issues. The ConceptNode was originally designed for use in the now-obsolete PLN subsystem. It is given the name "concept" so as to suggest it's use in knowledge representation and ontologies. In PLN, it is associated with assorted arithmetic formulas to determine it's truth within certain reasoning and inference contexts. The ConceptNode has implied semantic content.
The ItemNode addresses the need for a more neutral term. The ItemNode is "just some thing". There's no particular semantic intent to it. It is a subtype of LexicalNode only because Items can generally be listed and described in some way: the listing implies that it is a "lexical entry".
Thus, the EdgeLink, together with the TagNode and ItemNode are meant to be a "modern" replacement for the classic expression
(EvaluationLink (PredicateNode "name of relation") (ListLink (ConceptNode "one idea") (ConceptNode "another idea")))
Note how TagNode replaces PredicateNode in this construction. Again, Tags are meant to be more neutral, whereas Predicates have the implied semantics of first-order (predicate) logic: they are true or false. TagNodes are neithr true nor false, they are just arbitrary labels that can be applied to relationships. They are again LexicalNodes, because, presumably, the collection of all tags can be listed, collected up in a dictionary, and "explained" in some way.
The EdgeLink replaces the EvaluationLink for a more concrete reason. The EvaluationLink is implemented as a C++ class that performes a significant amount of analysis on it's content, and memoizes what it finds, thus consuming additional RAM. EvaluationLinks were designed to support GroundedPredicates, which need this analysis and preparation. But if the goal is to just represent some relationships, the CPU and RAM overhead of using EvaluationLinks is pointless.
The ItemClassNode is intended to provide a convenient way of grouping items into lexicons. For example
(MemberLink (ItemNode "next to") (ItemClaseNode "preposition"))
suggests that the UTF-8 string "next to" belongs to a collection of things that can be nominally called "prepositions". It can be thought of as a form of set membership, or as a lexical entry in the lexis of "prepositions". It is meant to be less burdened than the older concept of sets in PLN, which struggled with providing arithmetic truth value formulas for sets that are defined extensively (by listing) or intensively (with predicates). The goal here is to avoid the overtones of set theory and predicate logic, and the formalities associated with Borel hierarchies that one struggles with when working in set theory. Here, the "semantic" intent is looser: the ad hoc characterization of (finite) collections of computational relations, as they occur in simple graph representations of structures.