'Adds an rdf value to a collection.
Adds an rdf value to a collection. Does not require that the collection be
open. NOTE: The caller is responsible for ensuring that the collection
exists and is of the correct type.
Args:
collection_urn: The urn of the collection to add to.
token: The database access token to write with.
rdf_value: The rdf value to add to the collection.
timestamp: The timestamp (in microseconds) to store the rdf value
at. Defaults to the current time.
suffix: A \'fractional timestamp\' suffix to reduce the chance of
collisions. Defaults to a random number.
mutation_pool: An optional MutationPool object to write to. If not given,
the data_store is used directly.
**kwargs: Keyword arguments to pass through to the underlying database
call.
Returns:
The pair (timestamp, suffix) which identifies the value within the
collection.
Raises:
ValueError: rdf_value has unexpected type.'

@classmethod
def StaticAdd(cls, collection_urn, token, rdf_value, timestamp=None, suffix=None, mutation_pool=None, **kwargs):

    if (not isinstance(rdf_value, cls.RDF_TYPE)):
        raise ValueError(('This    collection    only    accepts    values    of    type    %s.' % cls.RDF_TYPE.__name__))
    if (timestamp is None):
        timestamp = rdfvalue.RDFDatetime.Now()
    if isinstance(timestamp, rdfvalue.RDFDatetime):
        timestamp = timestamp.AsMicroSecondsFromEpoch()
    if (not rdf_value.age):
        rdf_value.age = rdfvalue.RDFDatetime.Now()
    if (not isinstance(collection_urn, rdfvalue.RDFURN)):
        collection_urn = rdfvalue.RDFURN(collection_urn)
    result_subject = cls._MakeURN(collection_urn, timestamp, suffix)
    if mutation_pool:
        mutation_pool.Set(result_subject, cls.ATTRIBUTE, rdf_value.SerializeToString(), timestamp=timestamp, **kwargs)
    else:
        data_store.DB.Set(result_subject, cls.ATTRIBUTE, rdf_value.SerializeToString(), timestamp=timestamp, token=token, **kwargs)
    return cls._ParseURN(result_subject)
