Hi Antoine, > Thanks, Pete! I think it is clearer to me, now. > Though it may look weirder, in a way. The production rules are the same for > DC-Text, aren't they? I is just the mapping to RDF that changes. Ah, OK. I guess I misunderstood what you meant by production rules :) > In that case, I would have rather expected the distinction to be made > strongly in DCAM (where is matters, if one wants a good alignment with RDF > there) I think this was the motivation (or one of them) for introducing the "non-literal value surrogate" and "literal value surrogate" containers. The previous version of the DCAM http://dublincore.org/documents/2005/03/07/abstract-model/ omitted them and it wasn't clear whether "value string" was supposed to map to (a) the simple single triple, literal-as-object case (b) the two triple, second triple with rdf:value predicate and literal object case (c) sometimes (a) and sometimes (b) depending on whether other components were present (!) > and hidden in DC-Text (where it does not really matter, unless DC- > Text is meant as a complete implementation of DCAM and all the distinctions > it could make). DC-Text was intended to be a complete implementation of DCAM. IIRC, I/we did briefly toy with including constructs like Statement ( LiteralValueSurrogate ( ValueString( ) ) ) Statement ( NonLiteralValueSurrogate ( ValueString( ) ) ) but it just seemed simpler to "flatten the structure down" to Statement ( LiteralValueString( ) ) Statement ( ValueString( ) ) It's probably not ideal, or at least it's probably incomplete in a "formal" sense, e.g. I think we left undefined how/whether to interpret "contradictory" cases like Statement ( LiteralValueString( ) ValueURI( ) ) Pete