Value types are configurable, so the RDF generators for each value type should come from a factory/registry. The interface of the generators should have two methods:
- getValueLiteral - returns the value as a literal, omitting all "complex" aspect (or null)
- generateValueNode - generates a node representing the value, covering all aspects and subtleties.